【发布时间】:2014-12-02 23:31:52
【问题描述】:
我想取一列数字数据,在这种情况下,范围在 0 到 10 之间,并在迭代的基础上减去一个固定值。在我当前的范例中,每一列代表一个时间步长,并且取决于前一个时间步长 (t-1)。这种依赖性很重要,因为我想定义数字重置为 10 然后再次开始降级的列。我的主要问题是,这对于大型数据集来说效率非常低,我相当确定有一种更快、更具可扩展性的方式来完成这项任务。
df <- data.frame(matrix(data=0,nrow=10,ncol=10))
df[,1] <- data.frame(runif(10,0,10))
df[c(3,5,7),4] <- 10
degradation <- .16
for (year in 2:10){
df[,year][df[,year]!=10] <- df[,year-1][df[,year]!=10]-degradation
}
df[df<0]<-0
这是一个非常简单且低效的示例,说明了我希望数据的外观。我可能会停留在旧的 Excel 思维方式中,因此我愿意在必要时采用不同的方式来构建数据。
谢谢!
【问题讨论】:
标签: r