【发布时间】:2015-11-30 12:44:41
【问题描述】:
我是 R 的新手,所以如果有一个明显的答案,我很抱歉。我查看了其他问题,我认为“申请”是答案,但我不知道在这种情况下如何使用它。
我进行了一项纵向调查,每年都会邀请参与者。在某些年份,他们未能参加,有时他们会死去。我需要确定自调查开始以来哪些参与者参与了一致的“连续”(即,如果他们停止,他们将永远停止)。
我使用“for”循环完成了这项工作,在下面的示例中效果很好。但是我有很多年和很多参与者,而且循环很慢。我可以使用更快的方法吗?
在示例中,TRUE 表示他们参加了那一年。该循环创建两个向量 - 'finalyear' 表示他们参与的最后一年,'streak' 表示他们是否在最后一年之前完成了所有年份(即案例 1、3 和 5)。
dat <- data.frame(ids = 1:5, "1999" = c(T, T, T, F, T), "2000" = c(T, F, T, F, T), "2001" = c(T, T, T, T, T), "2002" = c(F, T, T, T, T), "2003" = c(F, T, T, T, F))
finalyear <- NULL
streak <- NULL
for (i in 1:nrow(dat)) {
x <- as.numeric(dat[i,2:6])
y <- max(grep(1, x))
finalyear[i] <- y
streak[i] <- sum(x) == y
}
dat$finalyear <- finalyear
dat$streak <- streak
谢谢!
【问题讨论】:
-
很多答案 - 有人想创建更大的数据集并对其进行基准测试吗?数据集有多大,是否有可能制作一个具有代表性的基准测试集?
-
大约有25万例,25年。以下所有答案都解决了我的问题-谢谢大家!如果人们有兴趣,我可以制作一个有代表性的数据集来测试不同的方法。