【发布时间】:2021-10-21 02:07:58
【问题描述】:
我正在使用一个数据集,它需要我为列添加上一年之前的数据。我想为一列和一列列表添加上一年的数据。这是我尝试过的,
Company = c("ABC", "ABC", "ABC", "XYZ", "XYZ", "XYZ", "KJF", "KJF", "KJF", "KJF")
Year = c(2021, 2020, 2019, 2017, 2018, 2019, 2020, 2019, 2021, 2018)
REC = c(100, 200, 300, 3000, 4000, 2000, 5000, 6000, 7000, 8000)
S = c(1000, 2000, 3000, 300, 400, 200, 500, 600, 700, 800)
data = data.frame(Company, Year, REC, S, stringsAsFactors = FALSE)
fnames = c("REC", "S")
prevYear = 3
for(i in 1:length(fnames)) {
j = fnames[i]
yrTmp = match(Year - prevYear, Year, nomatch = 0)
data[, sprintf("PP%s", j)] =
data = data %>%
group_by(Company) %>%
mutate(data[, sprintf("PP%s", j)] = data[data[, j], yrTmp]) %>%
ungroup
print(paste("PP", j, "calculated"))
}
我想使用此循环将前一年的数据添加到 REC 和 S。将来我想使用这个循环添加 40 多个变量。如何使用 for 循环实现它? 这是所需的输出,
【问题讨论】:
-
你能添加你想要的输出吗!我觉得不使用任何循环就可以做到这一点
-
我已经添加了所需的输出。