dd_*_*ata 0 r filter dataframe dplyr data-wrangling
我有一个像这样的数据框:
city year value
<chr> <dbl> <dbl>
1 la 1 NA
2 la 2 NA
3 la 3 NA
4 la 4 20
5 la 5 25
6 nyc 1 18
7 nyc 2 29
8 nyc 3 24
9 nyc 4 17
10 nyc 5 30
Run Code Online (Sandbox Code Playgroud)
我想删除所有没有完整 5 年数据的城市。因此,在本例中,尽管存在第 4 年和第 5 年的数据,但我想删除城市 la 的所有行,从而产生以下数据框:
city year value
<chr> <dbl> <dbl>
1 nyc 1 18
2 nyc 2 29
3 nyc 3 24
4 nyc 4 17
5 nyc 5 30
Run Code Online (Sandbox Code Playgroud)
这可能吗?提前致谢。
在基础 R 中:
subset(df, !ave(value, city, FUN = anyNA))
city year value
6 nyc 1 18
7 nyc 2 29
8 nyc 3 24
9 nyc 4 17
10 nyc 5 30
Run Code Online (Sandbox Code Playgroud)
在 Tidyverse 中
df %>%
group_by(city) %>%
filter(!anyNA(value))
# A tibble: 5 x 3
# Groups: city [1]
city year value
<chr> <int> <int>
1 nyc 1 18
2 nyc 2 29
3 nyc 3 24
4 nyc 4 17
5 nyc 5 30
Run Code Online (Sandbox Code Playgroud)
甚至
df %>%
group_by(city) %>%
filter(all(!is.na(value)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |