R 每行,哪些列是NA
数据框“d”中的每行,我想知道哪些列不包含NA。我想要的输出是哪些列。有什么建议吗?谢谢R 每行,哪些列是NA,r,R,数据框“d”中的每行,我想知道哪些列不包含NA。我想要的输出是哪些列。有什么建议吗?谢谢 a <- c(1,3,4,5,NA) b <- c(1,NA,NA,5,9) c <- c(NA,3,4,5,3) d <- data.frame(a,b,c) d a b c 1 1 NA 3 NA 3 4 NA 4 5 5 5 NA 9 3 按行使用apply cols <- names(d) apply(!is.na(d), 1
a <- c(1,3,4,5,NA)
b <- c(1,NA,NA,5,9)
c <- c(NA,3,4,5,3)
d <- data.frame(a,b,c)
d
a b c
1 1 NA
3 NA 3
4 NA 4
5 5 5
NA 9 3
按行使用
apply
cols <- names(d)
apply(!is.na(d), 1, function(x) toString(cols[x]))
#[1] "a, b" "a, c" "a, c" "a, b, c" "b, c"
colsa一个选项可以是:
which(!sapply(d, is.na), arr.ind = TRUE)
row col
[1,] 1 1
[2,] 2 1
[3,] 3 1
[4,] 4 1
[5,] 1 2
[6,] 4 2
[7,] 5 2
[8,] 2 3
[9,] 3 3
[10,] 4 3
[11,] 5 3
使用collapse
中的dapply
,这将在行计算中更有效
library(collapse)
nm1 <- names(d)
dapply(d, FUN = function(x) toString(nm1[!is.na(x)]), MARGIN = 1)
#[1] "a, b" "a, c" "a, c" "a, b, c" "b, c"
库(折叠)
nm1
which(!sapply(d, is.na), arr.ind = TRUE)
row col
[1,] 1 1
[2,] 2 1
[3,] 3 1
[4,] 4 1
[5,] 1 2
[6,] 4 2
[7,] 5 2
[8,] 2 3
[9,] 3 3
[10,] 4 3
[11,] 5 3
library(collapse)
nm1 <- names(d)
dapply(d, FUN = function(x) toString(nm1[!is.na(x)]), MARGIN = 1)
#[1] "a, b" "a, c" "a, c" "a, b, c" "b, c"