我有一个 R 数据框,我试图在其中计算多列的变化百分比,但我似乎无法计算出它的正确语法。
基本上,我正在尝试计算列索引 2:5 相对于基准日期的变化百分比(第 1 列是日期)。
我认为有效的方法是:
df <- df %>% mutate(across(2:5, ~ -first(2:5)/2:5))*100
或者类似的东西,但似乎不正确。有人有建议吗? 非常感谢
始终分享可重现的数据示例以及预期输出,以解释您面临的问题。它可以更快地为您提供帮助并避免混乱。
根据我对您的解释的理解,我认为您想要的是计算与同一列中的第一个值相比的列值的百分比变化。以
mtcars
为例,这就是实现这一目标的方法 -
library(dplyr)
mtcars %>% mutate(across(2:5, ~(. - first(.))/first(.) * 100))
# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21 0 0.0 0.00 0.00 2.6 16 0 1 4 4
#Mazda RX4 Wag 21 0 0.0 0.00 0.00 2.9 17 0 1 4 4
#Datsun 710 23 -33 -32.5 -15.45 -1.28 2.3 19 1 1 4 1
#Hornet 4 Drive 21 0 61.3 0.00 -21.03 3.2 19 1 0 3 1
#Hornet Sportabout 19 33 125.0 59.09 -19.23 3.4 17 0 0 3 2
#Valiant 18 0 40.6 -4.55 -29.23 3.5 20 1 0 3 1
#Duster 360 14 33 125.0 122.73 -17.69 3.6 16 0 0 3 4
#Merc 240D 24 -33 -8.3 -43.64 -5.38 3.2 20 1 0 4 2
#Merc 230 23 -33 -12.0 -13.64 0.51 3.1 23 1 0 4 2
#Merc 280 19 0 4.7 11.82 0.51 3.4 18 1 0 4 4
#...
#...