我有一个数据框P
,它有因子变量“m”和“q”。此外,数据帧D
具有因子变量“m”,“q”,“f”和“t”。我想获得一个新的数据框H,其中包含因子“m”,“q”,“f”和“t where。
H(m,f,q,t) = P(m,q) * D(m,q,f,t) for all m,q,f and t.
基本上,我想合并共享变量'm'和'q'上的两个数据框,并将它们的Val
列相乘
数据以下列格式保存:
> head(P)
m q Val
raw1.Prio0 raw1 Prio0 0.5
raw1.Prio1 raw1 Prio1 0.7
raw2.Prio0 raw2 Prio0 1
raw2.Prio1 raw2 Prio1 1
product.Prio0 product Prio0 0.5
product.Prio1 product Prio1 1
> head(D)
m q f t Val
product.Prio0.a.P01 product Prio0 a P01 445.6159
product.Prio0.a.P02 product Prio0 a P02 445.6159
product.Prio0.a.P03 product Prio0 a P03 445.6159
product.Prio0.a.P04 product Prio0 a P04 1445.6159
product.Prio0.a.P05 product Prio0 a P05 1445.6159
product.Prio0.b.P01 product Prio0 b P01 176.0000
结果应如下所示:
> head(H)
m q f t Val
product.Prio0.a.P01 product Prio0 a P01 222.808
product.Prio0.a.P02 product Prio0 a P02 222.808
product.Prio0.a.P03 product Prio0 a P03 222.808
product.Prio0.a.P04 product Prio0 a P04 722.808
product.Prio0.a.P05 product Prio0 a P05 722.808
product.Prio0.b.P01 product Prio0 b P01 88.000
答案 0 :(得分:0)
试试这个:
H<-merge(P,D, by=c("m","q"))
H$Val <- H$Val.x * H$Val.y
输出:
> H
m q Val.x f t Val.y Val
1 product Prio0 0.5 a P01 445.6159 222.808
2 product Prio0 0.5 a P02 445.6159 222.808
3 product Prio0 0.5 a P03 445.6159 222.808
4 product Prio0 0.5 a P04 1445.6159 722.808
5 product Prio0 0.5 a P05 1445.6159 722.808
6 product Prio0 0.5 b P01 176.0000 88.000