获取数据框中存在多个值的列的值

时间:2014-10-04 21:10:58

标签: r

如果我在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 23 4。我怎么能在R? 谢谢!

1 个答案:

答案 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