【发布时间】:2021-12-23 05:59:45
【问题描述】:
我正在处理一个大型数据集(超过 100 万行),例如两列日期和一个延迟编号。
ID col1 Date Delay
1: A 100 2021-05-01 1
2: B 200 2018-04-03 3
3: C 300 2020-02-17 2
我想根据延迟量复制表中的行,同时增加新列中每一行的日期:
ID col1 Date Delay New_Date
1: A 100 2021-05-01 1 2021-05-02
2: B 200 2018-04-03 3 2018-04-04
3: B 200 2018-04-03 3 2018-04-05
4: B 200 2018-04-03 3 2018-04-06
5: C 300 2020-02-17 2 2020-02-18
6: C 300 2020-02-17 2 2020-02-19
我目前正在使用 for each 循环执行此操作,效率极低且需要大量时间。
for(row in 1:nrow(df)) {
delay <- as.numeric(df[row, "Delay"])
tempdf <- df[0,]
for(numberDelay in 1:delay) {
tempdf[numberDelay, ] <- df[row, ]
tempdf[numberDelay, "New_Date"] <- as.Date.character(tempdf[numberDelay, "Date"] + as.numeric(numberDelay),
tryFormats = "%Y-%m-%d")
}
result <- rbind(result, tempdf)
}
上下文:这将允许我通过进一步将新日期与列入黑名单的日期列表进行比较来确定周末或国定假日的延误。 在 R 中有没有一种有效的方法来做到这一点?
浣熊
【问题讨论】:
标签: r dataframe for-loop conditional-statements