根据另一个数据框中的信息,从数据框中提取系数

3

现在我有两个 R 数据框,包含以下类似的数据:

> data
  p a         i
1 1 1 2.2561469
2 5 2 0.2316390
3 2 3 0.4867456
4 3 1 0.1511705
5 4 2 0.8838884

同时,其中一个包含系数的看起来像这样:

> coef
         3        2        1
1 29420.50 31029.75 29941.96
2 26915.00 27881.00 27050.00
3 27756.00 28904.00 28699.40
4 28345.33 29802.33 28377.56
5 28217.00 29409.00 28738.67

这些数据框相互关联,data$a 中的每个值对应 coef 的列名,data$p 对应 coef 的行名。
我需要将这些系数应用于 data$i 中的值,通过匹配 coef 和 data$a、data$p 的行和列名来计算系数。
换句话说,对于 data 中的每一行,我需要使用 data$a 和 data$p 来提取 coef 中的特定数字,然后将该数字与该行 data$i 的值相乘,以创建一个新的向量,在 data 中看起来像这样:
> data
  p a         i          z
1 1 1 2.2561469      67553
2 5 2 0.2316390       6812
3 2 3 0.4867456         .
4 3 1 0.1511705         .
5 4 2 0.8838884         .

我在考虑根据行和列名称在我的coef数据框中创建因子,但不确定接下来该怎么做。
提前致谢,
Ian
1个回答

2
如果您对coef数据帧进行排序,您可以像没有列名一样对它们进行索引。
coef <- coef[,order(names(coef))]

然后对每一行应用一个函数:

apply

myfun <- function(x) {
  x[3]*coef[x[1], x[2]]
}

data$z <- apply(data, 1, myfun)

> data
  p a         i         z
1 1 1 2.2561469 67553.460
2 5 2 0.2316390  6812.271
3 2 3 0.4867456 13100.758
4 3 1 0.1511705  4338.503
5 4 2 0.8838884 26341.934
> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接