基于R中的两个变量的子设置面板数据

时间:2018-07-18 18:27:25

标签: r dplyr

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

1 个答案:

答案 0 :(得分:0)

尝试一下。我们首先group_by id,然后创建一个列表列,其中每个wave的排序后的唯一值是id。然后,我们检查以确保此列表等于1:4。我们创建一个missing_check变量,它是每个max的{​​{1}}中的missing。我们同时过滤idmissing_check

wave_check