删除数据框中包含多个间隔之外的值的行

Remove rows in a dataframe containing values outside multiple intervals

一直在您的论坛中搜索我的问题的答案,但没有结果,最近的结果是:subset data.frame union multiple intervals!但我看不出这对我有什么帮助。可能是我英文阅读理解能力太弱了。

所以,我有一个包含 246 个人的数据框 study_a,所有人都被赋予了特定的代码以保持匿名。代码是 14 列之一,其余是问卷上的答案。一个例子:

"Code"
2
653
2678
3965
7342
4258
5245

我的愿望是找到区间 1-2999、4251-4599 和 7000-7500 之外的那些值,最后删除这些行(即个人),因为它们不应包含在本研究中。

除了 link 我也试过:

    in.interval.lo(study_a$"code", 1, 2999) #in.interval.lo(x, lo, hi)

但是这个函数似乎不适用于多个时间间隔。此外,当我尝试指定要检查的列值时收到错误消息(因为除了 "code" 之外还有 13 列)。

预先感谢您的帮助,如果这个问题已经解决,我将非常感谢 link,因为我找不到它。

您应该看看 R 中使用方括号和逻辑的索引。例如。

study_a[(study_a$Code <= 2999) & (study_a$Code >= 4251),]

编辑:

使用 %in%! NOT 运算符来否定重叠:

study_a[ !study_a$code %in% c(1:2999, 4251:4599, 7000:7500), ]

使用子集函数

xx <- c(1:2999, 4251:4599, 7000:7500)
study_a <- subset(study_a, !code %in% xx )