子集data.frame由R中的两个变量组合而成(另一个df)

时间:2015-09-07 21:17:33

标签: r variables dataframe subset

我想通过组合来自另一个data.frame的两个因素来对data.frame进行分组。下面的玩具示例:

df <- data.frame(ind=seq(748,867), A=rep(1:12, 10), 
           val1=runif(120, 2,7), val2=runif(120, 42,70))
new <- data.frame(A=c(3,4,5), val1=c(1,6,6.8))

我需要在df中选择基于new条件的条件组合 我试过了:

> t1 <- subset(df, df$A %in% new$A & df$val1 > new$val1)

> t1
    ind A     val1     val2
4   751 4 5.991882 55.02130
16  763 4 6.664002 60.70389
28  775 4 3.952898 47.50801
29  776 5 6.448094 55.26087
40  787 4 3.916499 67.01201
52  799 4 5.475465 54.12958
64  811 4 4.641724 53.29380
76  823 4 6.186887 48.41644
88  835 4 2.757776 57.76709
89  836 5 6.290239 46.08715
100 847 4 3.160457 67.57916
112 859 4 3.988948 64.71397
113 860 5 6.569812 42.70852

我希望得到一组带参数的观察: A == 3&amp; VAL1大于1; A == 4&amp; VAL1→6; A == 5&amp; val1&gt; 6.8

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

subset(merge(df,new,by="A",all.x=TRUE), val1.x > val1.y)

合并确保比较的两个向量具有相同的长度。

为避免对df进行任何修改(重命名val1,添加另一个变量):

names(new)[2] <- "val1.y"
subset(merge(df,new,by="A",all.x=TRUE), val1 > val1.y)[-5]