【发布时间】:2019-03-04 21:41:40
【问题描述】:
我大致了解 apply 函数系列的作用,但我在使用它来根据另一列缺失值的列来改变新列时遇到了麻烦。我可以使用 for 循环来完成我的任务,但我想通过使用应用类型函数来加快性能
假设我有一个从今天开始到几年后结束的时间序列指数。我的原始索引仅在最初几年存在。然后,我想在余下的时间里使用假设的百分比变化(比如说 10%)人为地扩展这些索引,并将其存储为新列。
这是我的示例数据集:
data <- data.frame(
date = seq.Date(as.Date("2019-01-01"),as.Date("2021-01-01"),"3 months"),
index = c(1,1.2,1.4,1.5,1.6,1.7,NA,NA,NA)
)
我现在可以使用 for 循环创建一个新列 index2:
data$index2 <- 1
for (i in 1:nrow(data)) {
if (!is.na(data$index[i])) {
data$index2[i] = data$index[i]
}
else {
data$index2[i] = data$index2[i-1]*1.1
}
}
但是,我不知道如何使用 apply 函数来完成这项工作。再次感谢您的任何建议。
【问题讨论】:
-
您要替换所有
NA值吗?您的代码仅替换第一次出现。 -
@neilfws 抱歉,我打错了。 index2 的下一个观察值应该是 index2 上一个观察值的 % 变化,而不是 index。