यहां एक नमूना डेटा फ्रेम कि एक बड़ा डेटा सेट जैसा दिखता है:एक दृश्य गणना शामिल करने के लिए लागू नहीं महत्व देता
Day <- c(1, 2, NA, 3, 4, NA, NA, NA, NA, NA, 1, 2, 3, NA, NA, NA, NA, 1, 2, NA, NA, 3, 4, 5)
y <- rpois(length(Day), 2)
z <- seq(1:length(Day)) + 500
df <- data.frame(z, Day, y)
अगर वहाँ डे कॉलम में 4 या अधिक लापता मूल्यों (NAS) का क्रम है, कि अनुक्रम अध्ययन में समूह के बीच एक अंतर का प्रतिनिधित्व करता है। यदि अनुक्रम में 4 से कम एनएएस हैं, तो गायब मान को अभी भी समूह का हिस्सा माना जाता है (उदाहरण के लिए, पंक्ति 3 कोहोर्ट 1 का हिस्सा है, लेकिन पंक्ति 8 नहीं है)। नमूना डेटा फ्रेम में, 3 समूह हैं (कोहोर्ट 1: पंक्तियां 1-5, कोहोर्ट 2: पंक्तियां 11-13, और कोहोर्ट 3: पंक्तियां 18-24) हैं। मैं समूह संख्या और कोहोर्ट अध्ययन दिवस सूचीबद्ध करने वाले दूसरे कॉलम को सूचीबद्ध करने वाला एक कॉलम जोड़ना चाहता हूं। यहां कोड का उपयोग किया गया है:
require(dplyr)
CheckNA <- rle(is.na(df$Day))
CheckNA$values <- CheckNA$lengths >= 4 & CheckNA$values == 1
ListNA <- rep(CheckNA$values, CheckNA$lengths)
df$Co <- rep(c(1, NA, 2, NA, 3), rle(ListNA)$lengths) %>% as.factor()
df <- df %>%
group_by (Co) %>%
mutate(CoDay = seq(Co)) %>%
as.data.frame()
df$CoDay <- ifelse(is.na(df$Co), NA, df$CoDay)
क्या इस कार्य को पूरा करने के लिए कोई और अधिक प्रभावी तरीका है? मैं विशेष रूप से कोड संख्या को सूचीबद्ध करने से बचने के लिए कोड की तलाश कर रहा हूं, क्योंकि मेरे वास्तविक डेटा सेट में 10 से अधिक समूह होंगे। मैं वर्तमान में अनुक्रम को सूचीबद्ध करता हूं जिसे दोहराया जाना चाहिए: सी (1, एनए, 2, एनए, 3)।
धन्यवाद!
इस कोड की समीक्षा का समय पार नियुक्त किया गया है: http://codereview.stackexchange.com/questions/160059/r-code-to-count-a-sequence-of-cohort-studies –
मेरे पास है कोड समीक्षा से इसे हटा दिया। –