2017-07-27 6 views
4

は、だから私は、データフレーム凝縮行

mydf

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

を持っていると私はそれがこの

revisedmydf

のように見えるので、NAのを圧縮するwan't
  Pro1 Pro2 Pro3 Pro4 
Pathway1 Woot Yeet Yike 
Pathway2 Dang Yike 
Pathway3 Blah Try  Lost 

基本的に、NAは削除され、その横の列の情報がその領域に引き込まれます。私はこれにどのように接近するのか分かりません。私はこの質問に正しく題名を付けるのか、正しい用語を使用しているのか分かりません。それで、これがそこに重複する質問であれば、私はお詫び申し上げます。
ベスト!

答えて

4

行をループするには、NA以外の行の要素と複製された空白("")を「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'を確認してください。あなたはNAかNAを持っていますか? – akrun

+1

変換前のサンプルデータの 'is.na(mydf)'の出力は "NA"でしたか?私はそれをNAに変換した後、それは働いた。ありがとう! –