通过使用 R 将所有填充的单元格保留在新列中来删除 NA

Remove NA's by keeping all the populated cells in new columns using R

如何删除所有具有缺失值的元素而不是删除整个列,而是创建仅包含填充单元格的列?例如从这个

A   B   C   D
1   NA  2   NA
NA  3   NA  4
NA  5   6   NA

(data1) 以创建仅包含已填充单元格的数据集,因为此

AB  BB 
1   2  
3   4
5   6 
># Create example dataset (data1)
>data1 <- data.frame(matrix(c(1,NA,2,NA,NA,3,NA,4,NA,5,6,NA),nrow = 3, byrow = T))
>colnames(data1) <- c("A","B","C","D")
     
>print(data1)
 A  B  C  D
 1 NA  2 NA
 NA  3 NA  4
 NA  5  6 NA

> # Create new dataset?

这是使用 akrun's/Valentin's answer from this question 的潜在解决方案。

假设数据是

data1 <- data.frame(matrix(c(1,NA,2,NA,NA,3,NA,4,NA,5,NA,NA),nrow = 3, byrow = T))
> data1 
  X1 X2 X3 X4
1  1 NA  2 NA
2 NA  3 NA  4
3 NA  5 NA NA

然后使用

df1 <- t(sapply(apply(data1, 1, function(x) x[!is.na(x)]), "length<-", max(lengths(lapply(data1, function(x) x[!is.na(x)])))))

到达

> df1
     X1 X3
[1,]  1  2
[2,]  3  4
[3,]  5 NA