library(dplyr)
id <- c(rep(1,4),rep(2,3),rep(3,4))
missing <- c(rep(0,4),rep(0,3),1,0,0,0)
wave <- c(seq(1:4),1,2,3,seq(1:4))
df <- as.data.frame(cbind(id,missing,wave))
df
id missing wave
1 1 0 1
2 1 0 2
3 1 0 3
4 1 0 4
5 2 0 1
6 2 0 2
7 2 0 3
8 3 1 1
9 3 0 2
10 3 0 3
11 3 0 4
我正在尝试删除缺少== 1或缺少wave(1:4)的案例。例如,应该删除ID = 3,因为在wave = 1时它们丢失了= 1,而应该删除ID = 2,因为它们在Wave中只有值1、2和3。
我尝试使用dplyr的group_by和filter函数,但这会删除所有情况。我只想结束ID = 1的案件。
df <- df %>% group_by(id) %>% filter(missing==0, wave==1, wave==2, wave==3, wave==4)
df
答案 0 :(得分:0)
尝试一下。我们首先group_by
id
,然后创建一个列表列,其中每个wave
的排序后的唯一值是id
。然后,我们检查以确保此列表等于1:4
。我们创建一个missing_check
变量,它是每个max
的{{1}}中的missing
。我们同时过滤id
和missing_check
。
wave_check