r - 计算多对列的比率

标签 r

我在 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/

相关文章:

r - 将 summarize 与命名向量一起使用

arrays - 在 R 中写入和读取 3D 数组

r - 功能正常。但是,当与 sapply 一起使用以将向量的每个值作为参数之一传递时,我收到错误

r:除了循环似乎别无选择的情况

r - 使用 biomaRt 注释位置

r - 是否有一个运算符可以代替函数 coord_map() 的 '+' 符号?

r - 在 R 中,如何按组添加最大值?

r - 如何在 expression() 中使用 atop 函数?

r - 使用 dplyr : Renaming a column with variable using glue syntax 编程

r - 无法使用 Mongolite R 验证凭据