我有一个数据框,其中包含列中的值和 NA。数据框如下所示:
A B C D
1 NA NA NA
NA 2 3 NA
NA 4 NA NA
5 NA NA 6
我正在尝试将其转换为如下形式:
A B C D
1 2 3 6
5 4 NA NA
NA NA NA NA
NA NA NA NA
将非 NA 值堆叠到每列的顶部。有没有简单的方法可以做到这一点?
最佳答案
您可以使用 lapply
按 NA
值对每列进行排序。请记住,这会保留非 NA
列顺序,而 x[order(x)]
只会对列重新排序:
df1[] <- lapply(df1, function(x) x[order(is.na(x))])
df1
A B C D
1 1 2 3 6
2 5 4 NA NA
3 NA NA NA NA
4 NA NA NA NA
数据:
df1 <- read.table(header = T, text = "A B C D
1 NA NA NA
NA 2 3 NA
NA 4 NA NA
5 NA NA 6")
关于r - 将非 NA 值堆叠到每列的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609242/