【发布时间】:2019-03-13 13:59:46
【问题描述】:
喏,
这是我的复制示例。
HAVE <- data.frame(ID=c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6),
ABSENCE=c(NA,NA,NA,0,0,0,0,0,1,NA,0,NA,0,1,2,0,0,0),
TIME=c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3))
WANT <- data.frame(ID=c(1,2,3,4,5,6),
ABSENCE=c(NA,0,1,0,1,0),
TIME=c(NA,3,3,2,2,3))
高数据文件 HAVE 是我需要转换为 WANT 的文件。因此,基本上对于每个 ID,我需要识别第一个非零值,并且该值进入数据文件 WANT。如果缺席的所有值都是 NA,则 TIME 是 NA。如果 ABSENCE 的所有值都是 0,那么我会在 WANT 中报告最后可能的行(反映在 TIME 变量中)
这是我的尝试:
WANT <- group_by(HAVE,ID) %>% slice(seq_len(min(which(ABSENCE > 0), n())))
但如果只有 0,我不知道如何取最后一行 0。
【问题讨论】:
-
WANTdata.frame 似乎有一些问题,length(WANT$TIME)与其他向量不同。
标签: r dplyr data-cleaning