2017-06-13 67 views
-1

我正在寻找一种方式来获得在组省略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

回答

2

一种方式做到这一点是利用na.omittail

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()) 
+0

谢谢!很有趣的是如何'最后(na.omit(COL_2))'和'COL_2 [!is.na(COL_2)]'不工作,但'tail'呢! – user1700890

1

的例如通过“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 
+0

太谢谢你了! '安排(is.na(col_2))'对我来说很新。我没有说出我的问题。我需要在每个组中最后一个非NA元素。拉米亚已经回答了这个问题,但是非常感谢你们! – user1700890