У меня есть два фрейма данных в r, которые я пытаюсь объединить на основе значений в столбце для каждого.
df1=data.frame(comp=c("comp1", "comp2", "comp3","comp1"),
state1=c(1,0,0,1),
state2=c(1,1,0,1),
state3=c(0,1,1,0),
state4=c(0,0,1,0),year=c(1,1,1,2))
comp state1 state2 state3 state4 year
1 comp1 1 1 0 0 1
2 comp2 0 1 1 0 1
3 comp3 0 0 1 1 1
4 comp1 1 1 0 0 2
df2=data.frame(state=c("state1","state2", "state3", "state4",
"state1","state2", "state3", "state4"),
var1=c(1,0,0,1,0,0,1,1),
var2=c(0,1,0,0,0,1,1,0),
year=c(1,1,1,1,2,2,2,2))
df2
state var1 var2 year
1 state1 1 0 1
2 state2 0 1 1
3 state3 0 0 1
4 state4 1 0 1
5 state1 0 1 2
6 state2 0 1 2
7 state3 1 1 2
8 state4 1 0 2
Я бы хотел добавить к df1 столбцы, которые являются var1, var2, что является средним значением всех состояний для этой композиции.
так, var1 для comp1 должно быть 1 * 1 + 1 * 0 + 0 * 0 + 0 * 1 / (1 + 1) или состояние * var / sum (состояние для comp) по годам.
df3 будет выглядеть так:
state1 state2 state3 state4 year var1 var2
1 comp1 1 1 0 0 1 0.5 0.5
2 comp2 0 1 1 0 1 0.0 0.5
3 comp3 0 0 1 1 1 0.5 0.0
4 comp1 1 1 0 0 2 0.5 1.0
Возможно ли это? Я пытался использовать ddply со средним значением var1, суммируя по годам и годам, но это не работает. Я получаю более одной строки на комп в год.
Заранее спасибо.
Это наиболее похоже на мою проблему, но оно не показывает условия во втором наборе данных. Умножать различные подмножества фрейма данных на разные векторы
Пожалуйста, сообщите.