如何基于R中的一个变量的值删除一些观测值?

时间:2019-03-10 18:08:40

标签: r

当我具有三个可以采用以下值的变量时,我就有一个数据集-2, -1, 0, 1, 2, 3, 4, 5 由于某些原因,我只想在观测值等于1, 2, 3, 4 or 5时使用这些变量。换句话说,我想在var1/var2/var3=-2, -1 or 0时放弃观察 我知道在Stata中这是通过命令DROPdrop if var1 == 0 / drop if var1<0...)来完成的。 R中是否有类似的等效项?谢谢

1 个答案:

答案 0 :(得分:0)

如果您的data.frame为df,则一种实现方法如下:

df <- data.frame( #an example
        var1 = c(1, 2, 3),
        var2 = c(-1, 3, 4),
        var3 = c(2, 3, -2)
      )

df
  var1 var2 var3
1    1   -1    2
2    2    3    3
3    3    4   -2

df[apply(df, 1, function(x)
          ! any(x %in% c(0, -1, -2))), ]

  var1 var2 var3
2    2    3    3

apply函数在df的行中向下运行,对于集合中没有(TRUE)没有!值的行,其作用为any c(0, -1, -2)。然后,此逻辑向量用于对df的行进行子集化。