r - R:计算一组变量和参考变量之间的绝对和相对差异
问题描述
我有一个名为 dat 的数据框,其结构如下:
dat
ref test1 test2 test3 test4 test5 test6
1 1565 1432 1299 1166 1033 900 767
2 1232 1117 1002 887 772 657 542
3 1417 1342 1267 1192 1117 1042 967
4 895 1115 1335 1555 1775 1995 2215
5 2150 1890 1630 1370 1110 850 590
6 1565 1432 1299 1166 1033 900 767
我想创建一个脚本,它计算每个变量 test1、test2、test3(如果脚本可以选择名称以“test”开头的所有变量,那就太好了),testX 和 ref 之间的绝对和相对差异. 结果应该是如下的数据框:
结果
test1_absdiff test2_absdiff test3absdiff test1_percdiff test2_percdiff test3percdiff
1 -133 -266 -399 -0.0850 -0.170 -0.255
2 -115 -230 -345 -0.0933 -0.187 -0.280
3 -75 -150 -225 -0.0529 -0.106 -0.159
4 220 440 660 0.246 0.492 0.737
5 -260 -520 -780 -0.121 -0.242 -0.363
6 -133 -266 -399 -0.0850 -0.170 -0.255
我可以编写代码来计算一个新变量,但我不知道如何将它应用于一组变量,定义为具有公共前缀(“test”)
感谢您的帮助!
解决方案
dat=read.table(text="
ref test1 test2 test3 test4 test5 test6
1 1565 1432 1299 1166 1033 900 767
2 1232 1117 1002 887 772 657 542
3 1417 1342 1267 1192 1117 1042 967
4 895 1115 1335 1555 1775 1995 2215
5 2150 1890 1630 1370 1110 850 590
6 1565 1432 1299 1166 1033 900 767",h=T)
k=which(grepl("test",colnames(dat)))
tmp1=dat[,k]-dat[,"ref"]
colnames(tmp1)=paste0(colnames(tmp1),"_absdiff")
tmp2=(dat[,k]-dat[,"ref"])/dat[,"ref"]
colnames(tmp2)=paste0(colnames(tmp2),"_percdiff")
round(cbind(tmp1,tmp2),3)
test1_absdiff test2_absdiff test3_absdiff test4_absdiff test5_absdiff test6_absdiff test1_percdiff
1 -133 -266 -399 -532 -665 -798 -0.085
2 -115 -230 -345 -460 -575 -690 -0.093
3 -75 -150 -225 -300 -375 -450 -0.053
4 220 440 660 880 1100 1320 0.246
5 -260 -520 -780 -1040 -1300 -1560 -0.121
6 -133 -266 -399 -532 -665 -798 -0.085
test2_percdiff test3_percdiff test4_percdiff test5_percdiff test6_percdiff
1 -0.170 -0.255 -0.340 -0.425 -0.510
2 -0.187 -0.280 -0.373 -0.467 -0.560
3 -0.106 -0.159 -0.212 -0.265 -0.318
4 0.492 0.737 0.983 1.229 1.475
5 -0.242 -0.363 -0.484 -0.605 -0.726
6 -0.170 -0.255 -0.340 -0.425 -0.510
推荐阅读
- python - 如何在 python 中模仿 C# out 关键字功能来传递多个值
- php - 在 Memberpres 支付月费后设置用户角色
- github - 在 Github README 中获取用户选择的颜色主题
- sql - 将行插入视图 SQL 时出现主键错误
- azure-devops - Azure 数据工厂 YAML 部署在具有空格的 overrideParameter 键上失败
- selenium - 如何在守夜人中检查工具提示的值
- python - 使用为行定义的名称仅对 SUMPRODUCT 行进行清洁的方法
- python - 标准缩放器 inverse_transform 适用于任何形状?
- python - 使用 setup.py 构建和安装后无法导入包
- javascript - Selenium IDE 的导出套件生成带有“waitForWindow(2000)”的 xxx.spec.js 文件,该文件会爆炸