删除数据框中包含多个间隔之外的值的行
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 )
一直在您的论坛中搜索我的问题的答案,但没有结果,最近的结果是: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 )