gpt4 book ai didi

r - 将上面一行按下面一行划分

转载 作者:行者123 更新时间:2023-12-04 11:37:39 25 4
gpt4 key购买 nike

我有以下输入数据框:

df1 <- data.frame(row.names=c("AA","BB","CC","DD","EE"), A=c(0.90,0.75,0.65,0.55,0.45), B=c(0.80,0.75,0.60,0.60,0.45))

Row A B
AA 0.90 0.80
BB 0.75 0.75
CC 0.65 0.60
DD 0.55 0.60
EE 0.45 0.45

有没有办法将 AA 行中的值除以 BB 行中的值(0.90/0.75 = 1.200)。然后,我希望将 BB 行中的这个新值除以 CC 行中的值(1.2/0.65 = 1.846)等,以生成以下输出数据帧:
Row  A     B
A 0.900 1.067
B 1.200 1.067
C 1.846 1.778
D 3.357 2.963
E 7.459 6.584

我真的很头疼这个,所以非常感谢任何帮助。

谢谢你们!

最佳答案

你可以使用一个简单的 for循环或 cumprod :

df2 <- df1
for (i in 2:nrow(df2)) {
df2[i, ] <- df2[i-1,]/df2[i,]
}

根据您的列数, cumprod方法应该快很多:
df3 <- df1
df3$A <- cumprod(c(df3[1, "A"], 1/df3[-1, "A"]))
df3$B <- cumprod(c(df3[1, "B"], 1/df3[-1, "B"]))

all.equal(df2, df3)
# TRUE

关于r - 将上面一行按下面一行划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com