数据帧中具有NA的冷凝行(R)

时间:2017-07-27 18:32:03

标签: r dataframe row

所以我有一个数据框

是myDF

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

我不想压缩NA,所以看起来像这样

revisedmydf

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

基本上,NA被删除,然后其旁边的列中的信息被拉入其空间。我不知道如何处理这个,我不确定我是否正确地标题这个问题或者使用了正确的术语。所以,如果这是一个重复的问题,我道歉 最好!

1 个答案:

答案 0 :(得分:4)

我们可以使用apply循环遍历行,根据&#39; NA&#39的数量连接非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))]))