请考虑以下简单示例
group <-c('A','A','A','B','B','B','B')
names<- c(NA,'fred',NA,'josh','josh',NA,NA)
data=data_frame(group,names)
> data
# A tibble: 7 × 2
group names
<chr> <chr>
1 A <NA>
2 A fred
3 A <NA>
4 B josh
5 B josh
6 B <NA>
7 B <NA>
Run Code Online (Sandbox Code Playgroud)
在这里,我想获得,每个group第一个非缺失的名称names.我怎样才能做到这一点?下面的解决方案使用coalesce和first失败.
data %>% group_by(group) %>% mutate(first_non_missing = first(names),
first_non_missing_alt = coalesce(names)) %>% ungroup()
# A tibble: 7 × 4
group names first_non_missing first_non_missing_alt
<chr> <chr> <chr> <chr>
1 A <NA> <NA> <NA>
2 A fred <NA> fred
3 A <NA> <NA> <NA>
4 B josh josh josh
5 B josh josh josh
6 B <NA> josh <NA>
7 B <NA> josh <NA>
Run Code Online (Sandbox Code Playgroud)
的确,对于小组来说A,first_non_missing应该是fred对所有三个观察......
非常感谢!
Mar*_*son 13
总结将为每个组提供一个条目,在这里,找到第一个非缺失使用 which
data %>%
group_by(group) %>%
summarise(first_non_missing = names[which(!is.na(names))[1]])
Run Code Online (Sandbox Code Playgroud)
给
group first_non_missing
<chr> <chr>
1 A fred
2 B josh
Run Code Online (Sandbox Code Playgroud)
如果您仍想要所有行,请替换summarise为mutate.
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |