繁体   English   中英

动态计算 R 中列之间的差异

[英]dynamically calculate difference between columns in R

我的 data.table 包含先验未知数量的列,例如三个:

DT <- data.table("columnPred" = c(1,2,3), 
                 "column1" = c(7,8,9), 
                 "column2" = c(44,55,66))

现在我想计算列之间的变化:

DT[, delta1 := ((columnPred/column1)-1)*100]
DT[, delta2 := ((column1/column2)-1)*100]
...

但是我事先不知道我的 data.table 会有多少列,我需要动态地执行此操作。

如何才能做到这一点?

delta_col_names <- paste0("delta",1:(ncol(DT)-1))

DT[, (delta_col_names) := ((DT[,1:(ncol(DT)-1)] / DT[,-1])-1)*100]

   columnPred column1 column2    delta1    delta2
1:          1       7      44 -85.71429 -84.09091
2:          2       8      55 -75.00000 -85.45455
3:          3       9      66 -66.66667 -86.36364

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM