仅当面板数据中的变量始终为 0 时才删除变量?

Delete Variable only if ALWAYS 0 in Panel Data?

我有一个面板数据框,其中询问了女性的 children 数量。现在我想删除所有有children的女性,同时保留f.e的女性。 2016 年没有 child,但 2018 年。 这是供参考的部分数据框:

ID  year    child
1   2012    0
1   2014    0
1   2016    1
2   2012    0
2   2014    0
2   2016    0
3   2014    1
3   2016    1
4   2012    0
4   2016    1
4   2018    2
5   2018    0
5   2020    0

谁能帮我删除所有不是妈妈的女人?

dplyr 选项:

librar(dplyr)
df %>%
  group_by(ID) %>%
  filter(sum(child) >= 1)

输出:

# A tibble: 8 × 3
# Groups:   ID [3]
     ID  year child
  <dbl> <dbl> <dbl>
1     1  2012     0
2     1  2014     0
3     1  2016     1
4     3  2014     1
5     3  2016     1
6     4  2012     0
7     4  2016     1
8     4  2018     2

如您所见,母亲 2 和 5 没有 children。

base R 选项:

df[df$ID %in% df$ID[df$child!=0], ]

数据

df <- data.frame(ID = c(1,1,1,2,2,2,3,3,4,4,4,5,5),
                 year = c(2012, 2014, 2016, 2012, 2014, 2016, 2014, 2016, 2012, 2016, 2018, 2018, 2020),
                 child = c(0,0,1,0,0,0,1,1,0,1,2,0,0))
df <- data.frame(ID = c(1,1,1,2,2,2,3,3,4,4,4,5,5),
                 year = c(2012, 2014, 2016, 2012, 2014, 2016, 2014, 2016, 2012, 2016, 2018, 2018, 2020),
                 child = c(0,0,1,0,0,0,1,1,0,1,2,0,0))

library(data.table)

setDT(df)[, .SD[any(child > 0)], by = ID]
#>    ID year child
#> 1:  1 2012     0
#> 2:  1 2014     0
#> 3:  1 2016     1
#> 4:  3 2014     1
#> 5:  3 2016     1
#> 6:  4 2012     0
#> 7:  4 2016     1
#> 8:  4 2018     2

reprex package (v2.0.1)

于 2022-05-19 创建

reprex package (v2.0.1)

于 2022-05-19 创建