我想通过组合来自另一个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
有什么想法吗?
答案 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]