仅当面板数据中的变量始终为 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 创建
我有一个面板数据框,其中询问了女性的 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 创建