[英]Keep only groups of data with multiple observations
我试图只保留具有多个观察结果的 deids。
我有以下代码
help <- data.frame(deid = c(1, 5, 5, 5, 5, 5, 5, 12, 12, 12, 12),
session.number = c(1, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4),
days.since.last = c(0, 0, 7, 14, 93, 5, 102, 0, 21, 104, 4))
deid session.number days.since.last
1 1 1 0
2 5 1 0
3 5 2 7
4 5 3 14
5 5 4 93
6 5 5 5
7 5 6 102
8 12 1 0
9 12 2 21
10 12 3 104
11 12 4 4
我无力的尝试是使用 group_by 然后使用 filter( ) 命令
help %>% group_by(deid) %>% filter(session.number >=2)
但是,它只将 session.number 保持在 2 或更大。 所以我去掉了 deid = 1,但所有剩余的 deid 数据都从 session.number 2 开始,而不是 session.number 1。
我想告诉 R 的是让组(deid)保持大于 1 的观察(session.number)
非常感谢任何帮助。
这应该这样做 - 您需要按使用n()
获得的每个组中的观察数进行过滤:
help %>% group_by(deid) %>% filter(n()>1)
deid session.number days.since.last
1 5 1 0
2 5 2 7
3 5 3 14
4 5 4 93
5 5 5 5
6 5 6 102
7 12 1 0
8 12 2 21
9 12 3 104
10 12 4 4
使用 data.table 代替:
helpcount <- help[, list(Count = .N), by = deid]
helpf <- merge(help,helpcount, by = "deid")
helpf <- helpf[Count > 1]
编辑:更简洁一点:
help[, Count := .N, by = deid]
help[Count > 1]
EDIT2:thelatemail 更简洁的解决方案:
help[,if(.N > 1) .SD, by=deid]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.