Я хотел бы подмножество data.frame
путем сочетания двух факторов от другого data.frame
. Игрушечный пример ниже:подмножество data.frame сочетанием двух переменных в R (другое df)
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 & val1> 1; A == 4 & val1> 6; A == 5 & val1> 6.8
Любые идеи?
векторы получают 'переработаны', т.е. повторяется. Вы можете увидеть, что произойдет, если вы сами используете 'df $ val1> новый $ val1'. – jenesaisquoi
попробуйте применить подмножество один элемент за раз 'do.call (rbind, Map (function (x, y) df [df $ A == x & df $ val1> y,], новый $ A, новый $ val1)) ' –