首页 > 解决方案 > 如何根据 R 中一个变量的值删除一些观察结果?

问题描述

当我有三个变量时,我有一个数据集,这些变量可以采用以下值-2, -1, 0, 1, 2, 3, 4, 5 出于某种原因,我只想在观察值等于时使用这些变量1, 2, 3, 4 or 5var1/var2/var3=-2, -1 or 0 换句话说,当我知道在 Stata 中这是使用命令DROP( drop if var1 == 0 / drop if var1<0...)时,我想放弃观察。R中有类似的等价物吗?谢谢

标签: r

解决方案


如果你的 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针对 set 中没有 ( !)any值的行c(0, -1, -2)。然后使用该逻辑向量对 的行进行子集化df


推荐阅读