通过使用 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
如何删除所有具有缺失值的元素而不是删除整个列,而是创建仅包含填充单元格的列?例如从这个
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