如何获取包含两个其他值之间的值的数据帧的行?

时间:2015-05-04 08:03:07

标签: r dataframe range

所以我想在data.frame的列中找到值,这些值在定义的值范围内:

  example
 [1] 6 2 4 3 5 1
 pos
 [1] 1 3 2

我现在想要得到以下语句的BOTH为TRUE的示例值,以便我只得到pos - 1pos +1之间的值:

if(example < pos - 1)
if(example > pos + 1)

现在我的任务的真正价值在data.frame中。如何提取包含这些值并构建新pos的完整行 data.frame

示例的预期输出为:

result
[1] 2 3 1

提前致谢!

2 个答案:

答案 0 :(得分:6)

设置最小和最大阈值,然后将每个元素与它们进行比较

Mercurial

然后

maxind <- max(pos + 1)
minind <- min(pos - 1)

或类似地

example[sapply(example, function(x) x > minind & x < maxind)]
## [1] 2 3 1

或使用example[example > minind & example < maxind] ## [1] 2 3 1

data.table

答案 1 :(得分:3)

所以@David Arenburg建议的解决方案是这样的:

indx <- sapply(example[, 4], function(x) any(x < pos + 1) & any(x > pos - 1)) 

然后就这样做

example[indx,]

这将搜索指定列中的data.frame,以查找定义范围内的值,并为您提供所需的行!