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

时间:2016-10-13 09:48:19

标签: r dataframe find range intervals

在我的论坛上搜索我的问题的答案没有结果,我最近来的是:subset data.frame union multiple intervals!但我不明白这对我有什么帮助。也许我对英语的阅读理解力很弱。

所以,我有一个包含246个人的数据框$scope.F1s_Selection = years[0]; ,所有人都有一个特定的代码来匿名。代码是14列之一,其余是问卷的答案。一个例子:

study_a

我希望找到1-2999,4251-4599和7000-7500之间的那些值,最后擦除这些行(即个体),因为它们不应该包括在本研究中。

除了我尝试过的链接外:

"Code"
2
653
2678
3965
7342
4258
5245

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

先谢谢你的帮助,如果这个问题已经解决了,我会非常感谢你找到它的链接。

2 个答案:

答案 0 :(得分:1)

您应该使用方括号和逻辑来查看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), ]

答案 1 :(得分:0)

使用子集功能

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