2017-06-13 48 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