我在 R 中有一个这样的表:
id v1 v2 v3
1 115 116 150
2 47 50 55
3 70 77 77
我想将 v2/v1 之间的比率计算为 (v2/v1)-1,v3/v2 之间的比率为 (v3/v2)-1 等等(我有大约 55 个变量,并且需要获得类似的值这个:
id v1 v2 v3 rat1 rat2
1 115 116 150 0.01 0.29
2 47 50 55 0.06 0.10
3 70 77 77 0.10 0.00
是否有解决方法,这样我就不必为每一对独立编码?
谢谢!
最佳答案
它本质上是一个遍历 i
列和 i+1
列的循环,您可以为此编写一个 for
循环。或者在 R 语言中,使用矢量化函数,如 Map
/mapply
:
vars <- paste0("v",1:3)
outs <- paste0("rat",1:2)
dat[outs] <- mapply(`/`, dat[vars[-1]], dat[vars[-length(vars)]]) - 1
dat
# id v1 v2 v3 rat1 rat2
#1 1 115 116 150 0.008695652 0.2931034
#2 2 47 50 55 0.063829787 0.1000000
#3 3 70 77 77 0.100000000 0.0000000
关于r - 计算多对列的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54859709/