r - 使用两个数据帧的百分比差异并应用于第三个
问题描述
我有 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
。例如,对于group 100
in column Int
,该值是 0.044,大于 df2 的 0.970 Int
。这相当于说这是一个 4.56% 的增长。我想计算每列df2
与df1的相应列的百分比差异。
然后,我想对每个值应用该百分比增加或减少,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
让我知道这是否有意义!
解决方案
那是你需要的吗?
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)
推荐阅读
- docker - 即使在系统生成后,docker 仍然从缓存中构建
- javascript - 在 React 中将一个盒子添加到盒子列表中的动画
- apache-spark - pyspark 中的列
- python - Discord Python 脚本 - 在连接的服务器上安排每日发布的问题
- c++ - 如何避免在具有指针成员的类中指向已释放的内存(悬空指针)
- python - MacOS bash:Python 输出脚本并不总是写入外部文件
- mysql - 在字符串分组值中显示零
- javascript - React 上的复杂嵌套组件不起作用
- parsing - 关于自下而上解析的非终端问题
- javascript - Node.js 数据库更新对象作为列表