r - 如何过滤具有多个条件的数据框?

标签 r dataframe subset dplyr

我有这个数据框,我想对其进行子集化(如果可能,使用 dplyrbase R 函数):

df <- data.frame(x = c(1,1,1,2,2,2), y = c(30,10,8,10,18,5))

x  y
1 30
1 10
1  8
2 10
2 18
2  5

假设 x 是因子(所以 2 个条件/级别),我如何子集/过滤这个数据帧,以便我只得到 df$y df$x == 1 大于 15 的值, 和 df$y df$x == 2 大于 5 的值?

这就是我想得到的:
df2 <- data.frame(x = c(1,2,2), y = c(30,10,18))

x y
1 30
2 10
2 18

感谢任何帮助!谢谢!

最佳答案

如果您有多个 'x' 组,一种选择是使用 mapply .我们split使用 'x' 作为分组变量的 'y',创建要与 ( c(15,5) ) 进行比较的值向量并使用 mapply获取用于子集“df”的逻辑索引。

df[unlist(mapply('>', split(df$y, df$x), c(15,5))),]
#  x  y
#1 1 30
#4 2 10
#5 2 18

关于r - 如何过滤具有多个条件的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037199/

相关文章:

algorithm - 子集和 - 恢复解决方案

scala - 将 MongoDB 文档映射到具有类型但没有嵌入文档的案例类

r - strsplit() 的行为与字符串开头和结尾的空格不同

rCharts morris 标题和轴标签

r - 使用ggplot2绘制不同颜色的多条线

r - R中基于grep返回的代码新变量

Python pandas 数据框添加前一行值

r - 寻找具有所有相等元素的最大方子矩阵

string - R:如何根据规范更改数据框中的列名

r - 加快数据帧重排