我有这样的数据:
library(dplyr)
set.seed(123)
data <- data.frame(
date = rep(1:3, each=3),
grupo = rep(c("A", "B", "C"), 3),
x = runif(9, 10, 50),
y = runif(9, 20, 100),
z = runif(9, 5, 30)
)
# Convertir group into factor
data$grupo <- as.factor(data$grupo)
# Order data
data <- data %>% arrange(grupo, date)
我希望每一行的第一个观察值为(1+original_value/100).然而,从第二行开始,我希望将公式修改为first_moded_Value*(1 + second_observed_Value/100),第三个新行将执行:second_moded_Value*(1 + third_observed_Value/100).
我生成了以下公式,但我无法声明lag()应该采用修改后的值,而不是lag(原始值):
# Apply formula in each group for variables, x,y,z
dataaa <- data %>%
group_by(grupo) %>%
mutate(across(c(x, y, z), ~if_else(row_number() == 1, (1 + ./100), lag(.)*(1 + ./100))))
有什么帮助吗?