我在尋找一個簡單的方法來與至少一個NA將所有行數據幀/ DataTable的底部。例如:移動NA的底部
> df <- data.table(aaa=c(1,2,3,4,NA,6,7),
bbb=c(1,9,5,NA,3,NA,9),
ccc=c(NA,3,NA,4,8,NA,2)
)
> df
aaa bbb ccc
1: 1 1 NA
2: 2 9 3
3: 3 5 NA
4: 4 NA 4
5: NA 3 8
6: 6 NA NA
7: 7 9 2
會變成這樣的事情:
> df2 <- moveNAtoBottom(df)
> df2
aaa bbb ccc
1: 2 9 3
2: 7 9 2
3: 1 1 NA
4: 3 5 NA
5: 4 NA 4
6: NA 3 8
7: 6 NA NA
即頂部沒有NA的所有列。
注:
- 現在,我真的不關心,如果應用有任何排序的行,或者如果爲了保持或逆轉......只要表現有兩個部分,上面一個沒有來港,下一個爲NAS
- 這可以在dataframes或數據表
- 依賴是正常
更妙的是,如果我能能夠在指定列哪個搜索NA必須被應用。例如,仍與前面的例子:
> df3 <- moveNAtoBottom(df, applyTo = c("bbb", "ccc"))
> df3
aaa bbb ccc
1: 2 9 3
2: NA 3 8
3: 7 9 2
4: 1 1 NA
5: 3 5 NA
6: 4 NA 4
7: 6 NA NA
感謝
效果很好, 謝謝。我能問一個關於'dplyr'問題?爲什麼它與管道的工作,但並非沒有?如果他們以同樣的方式爲'magrittr'的管道工程,人們會認爲'安排(rowSums(是。na(select_(df,'bbb:ccc'))))'也可以,不是嗎? –
你需要指定你想要在哪個'data'上執行'arrange()':嘗試'arrange(df,rowSums(is.na(select_(df,'bbb:ccc'))))' –
哦,當然,我明白,謝謝。 –