【发布时间】:2019-09-06 00:56:39
【问题描述】:
:) 大家好
是的,我知道已经有一些技巧和窍门如何有效地逐行构建数据帧,但是我的 for 循环仍然很慢。也许对于你们中的一个人来说,如何加快速度/速度如此之慢的原因是什么。
如您所见,我已经按照以下说明将其转换为列表:Creating an R dataframe row-by-row,但这并不比 rbind 快得多。
index = 1
for (i in 1:nrow(predictionDf)) {
startDate = predictionDf$ApropYMD[i]
amountPerMonth = (predictionDf$PredictionExp[i]/12)
amountPerMonthMax = (predictionDf$PredictionMax[i]/12)
print(i)
for (j in 1:12) {
plotDf[index, ] = list(ApropYMD=startDate, AmountExp = amountPerMonth, AmountMax = amountPerMonthMax)
month(startDate) <- month(startDate) + 1
index = index + 1
}
}
这个我也试过了,快一点
plotDf = data.frame("ApropYMD" = c(seq(firstDayNextMonth, highestDate, by="months")))
plotDf$AmountExp = 0
plotDf$AmountMax = 0
for (i in 1:nrow(tmpPredictionDf)) {
startDate = tmpPredictionDf$ApropYMD[i]
amountPerMonth = (tmpPredictionDf$PredictionExp[i]/12)
amountPerMonthMax = (tmpPredictionDf$PredictionMax[i]/12)
print(i)
for (j in 1:12) {
plotDf$AmountExp[which(plotDf$ApropYMD == startDate)] = plotDf$AmountExp[which(plotDf$ApropYMD == startDate)] + amountPerMonth
plotDf$AmountMax[which(plotDf$ApropYMD == startDate)] = plotDf$AmountMax[which(plotDf$ApropYMD == startDate)] + amountPerMonthMax
month(startDate) <- month(startDate) + 1
}
我想在接下来的 12 个月中为 ~5.500 行中的每一行 -> 5.500*12 = 66.000 行插入分配一个日期的数量
Input
ApropYMD AmountExp AmountMax
2019-01-01 6000 12000
Output
ApropYMD AmountExp AmountMax
2019-01-01 500 1000
2019-01-02 500 1000
2019-01-03 500 1000
2019-01-04 500 1000
2019-01-05 500 1000
2019-01-06 500 1000
2019-01-07 500 1000
2019-01-08 500 1000
2019-01-09 500 1000
2019-01-10 500 1000
2019-01-11 500 1000
2019-01-12 500 1000
【问题讨论】:
标签: r performance loops dataframe rbind