我正在寻找一种方式来获得在组省略NA最后一个元素。标准dplyr解决方案是行不通的,这是不明确时,它会被固定issue最后一个元素省略NA - dplyr
任何人都可以围绕建议的工作?
这里是我所期待的
df <- DataFrame(col_1 = c('A', 'A', 'B', 'B'), col_2 = c(1, NA, 3, 3))
,所以我想组由COL_1和A组的回报1和B组的回报3
我正在寻找一种方式来获得在组省略NA最后一个元素。标准dplyr解决方案是行不通的,这是不明确时,它会被固定issue最后一个元素省略NA - dplyr
任何人都可以围绕建议的工作?
这里是我所期待的
df <- DataFrame(col_1 = c('A', 'A', 'B', 'B'), col_2 = c(1, NA, 3, 3))
,所以我想组由COL_1和A组的回报1和B组的回报3
一种方式做到这一点是利用na.omit
和tail
:
df %>% group_by(col_1) %>% summarise(last=tail(na.omit(col_2),1))
col_1 last
<fctr> <dbl>
1 A 1
2 B 3
或者你可以filter
您的数据帧,然后slice
每组的最后一行:
df %>% filter(!is.na(col_2)) %>% group_by(col_1) %>% slice(n())
的例如通过“COL_1分组后”,arrange
使用逻辑矢量is.na(col_2)
和slice
第一元件
library(dplyr)
df %>%
group_by(col_1)%>%
arrange(is.na(col_2)) %>%
slice(1)
# A tibble: 2 x 2
# Groups: col_1 [2]
# col_1 col_2
# <fctr> <dbl>
#1 A 1
#2 B 3
太谢谢你了! '安排(is.na(col_2))'对我来说很新。我没有说出我的问题。我需要在每个组中最后一个非NA元素。拉米亚已经回答了这个问题,但是非常感谢你们! – user1700890
谢谢!很有趣的是如何'最后(na.omit(COL_2))'和'COL_2 [!is.na(COL_2)]'不工作,但'tail'呢! – user1700890