如果我在R中有这样的数据帧,
1 2 abc bh abd NA NA
2 3 abc NA NA NA NA
3 4 NA NA ad yu ae
...................
我想在第1列和第2列中获取这些值,这些值在列的其余部分中具有多个值。例如,此处1 2
有3个值,3 4
也有3个值,2 3
只有一个值,其余为NA。所以,我想要1 2
和3 4
。我怎么能在R?
谢谢!
答案 0 :(得分:1)
x <- read.table(text="1 2 abc bh abd NA NA
2 3 abc NA NA NA NA
3 4 NA NA ad yu ae")
x[rowSums(!is.na(x[, -1:-2])) > 1, 1:2]
# V1 V2
#1 1 2
#3 3 4
!is.na(x[, -1:-2])
返回TRUE / FALSE值的矩阵。 rowSums
将TRUE值转换为1,将FALSE值转换为0并按行对它们求和。子集仅包含大于1的行,并返回列1:2
。