我有3个数据集:
df1
group Int var_a
100 0.044211088 -0.012787829
200 -0.047100911 0.077978254
300 0.038150455 -0.007357197
400 0.040368393 -0.008928011
500 0.062128815 -0.030815453
600 0.004291613 0.026521099
df2
Int var_a
1 0.9701036 0.001630575
df3
Int var_a
standardized coefficient 0.918654358 -0.001624649
df1
是df2
的值的残差。因此,例如,对于列Int
中的group 100
,该值比df2 Int
中的0.970大0.044。这相当于说这是4.56%的增长。我想计算每一列与df1中相应列的df2
之间的百分比差异。
然后,我想用df3
对每个值应用增加或减少的百分比,以获得每个组的等效系数。
更深入的内容:
1)取df1和df2的百分比差:
group int var_a
100 4.56% -784.25%
200 -4.86% 4782.25%
300 3.93% -451.20%
400 4.16% -547.54%
500 6.40% -1889.85%
600 0.44% 1626.49%
然后将上表中的百分比差值应用于df3中的相应列,得到最终结果:
group int var_a
100 0.96052072 0.011116705
200 0.874051434 -0.079319507
300 0.954781512 0.00570581
400 0.956881822 0.007270915
500 0.977488184 0.029078811
600 0.922718366 -0.028049362
让我知道这是否有意义!
发布于 2018-06-02 06:33:39
这能满足你的需求吗?
df1$Int <- df3$Int*(1+((df2$Int+df1$Int)/df2$Int)-1)
df1$Var_a <- df3$Var_a*(1+((df2$Var_a+df1$Var_a)/df2$Var_a)-1)
编辑
fun1 <- function(df1,df2,df3){
df1 <- df3*(1+((df2+df1)/df2)-1)
outdata<-data.frame(df1)
return(outdata)
}
为灵活起见,在拆分fct之后更改索引范围
df.new <- sapply(split(df1[,2:3], rownames(df1)), fun1, df2=df2,df3=df3)
df.new <- cbind(df1$group, data.frame(matrix(unlist(df.new), nrow=nrow(df1), byrow=T)))
colnames(df.new) <- colnames(df1)
https://stackoverflow.com/questions/50650856
复制相似问题