所以我有一个数据框
是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被删除,然后其旁边的列中的信息被拉入其空间。我不知道如何处理这个,我不确定我是否正确地标题这个问题或者使用了正确的术语。所以,如果这是一个重复的问题,我道歉 最好!
答案 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))]))