2017-07-27 47 views
4

所以我有一個數據幀爲NAS的數據幀(R)凝露行

是myDF

  Pro1 Pro2 Pro3 Pro4 
Pathway1 Woot <NA> Yeet Yike 
Pathway2 Dang <NA> <NA> Yike 
Pathway3 Blah Try  <NA> Lost 

我wan't壓縮NA的,所以它看起來像這樣

revisedmydf

  Pro1 Pro2 Pro3 Pro4 
Pathway1 Woot Yeet Yike 
Pathway2 Dang Yike 
Pathway3 Blah Try  Lost 

基本上,NA被刪除,然後在它旁邊的列中的信息被拉入它的空間。我不知道如何處理這個問題,我不確定我是否正確地標題或正在使用正確的術語。所以,如果這是一個重複的問題,我很抱歉。
最好!

回答

4

我們可以使用apply循環遍歷行,根據「NA」元素的數量連接非NA的行元素和複製空白("")(可能更好的是使用NA而不是"" - 在這種情況下c(x[!is.na(x)], x[is.na(x)])

mydf[] <- t(apply(mydf, 1, function(x) c(x[!is.na(x)], rep("", sum(is.na(x)))))) 
mydf 
#   Pro1 Pro2 Pro3 Pro4 
#Pathway1 Woot Yeet Yike  
#Pathway2 Dang Yike   
#Pathway3 Blah Try Lost  

或者使用order

mydf[] <- t(apply(mydf, 1, function(x) x[order(is.na(x))])) 
+0

出於某種原因,當我運行該代碼,它不給我相同的輸出,它給你 –

+2

@TaylorMaurer你可以檢查你的數據集的'str'。你有「不適用」或「不適用」嗎?示例數據中'is.na(mydf)'的輸出在變換之前的輸入是什麼 – akrun

+1

它是「NA」。一旦我將它轉換爲NA,它就起作用了。謝謝! –