【发布时间】:2021-01-16 16:08:43
【问题描述】:
df1
...other columns...MON TUE WED THU FRI SAT SUN Total
8.5 8.5 8.5 8.5 8.5 6.0 0.0 0.0
9.0 9.0 9.0 9.0 9.0 6.0 6.0 0.0
6.0 7.0 7.0 7.0 7.0 5.0 0.0 0.0
...about 1400 records/rows of data in df1
df2
Day Hours
FRI 0
SAT 0
SUN 0
MON 0
TUE 0
WED 0
THU 0
FRI 0
SAT 0
SUN 0
MON 0
TUE 0
WED 0
...Will keep going until end (28-31 days worth will be listed - all days in a month)
第 1 步
我需要遍历 df2 中的所有行,将“Day”列中的所有记录与 df1 列 MON-SUN 进行匹配...将 df1 中的相应小时数添加到 df2 中的“Hours”列中...仅使用df1 中的第一行,直到所有 df2 都被循环并填充...下面的输出示例
df2 输出
Day Hours
FRI 8.5
SAT 6.0
SUN 0
MON 8.5
TUE 8.5
WED 8.5
THU 8.5
FRI 8.5
SAT 6.0
SUN 0
MON 8.5
TUE 8.5
WED 8.5
...will continue all the way until last row until all data is filled from 1st row in df1 (repeating itself, just matching the right values)
第二步
在 df2 被循环和填充后 - 然后将 df2 中“小时”列的总和放在 df1“总计”列中
df1 输出
...other columns...MON TUE WED THU FRI SAT SUN Total
8.5 8.5 8.5 8.5 8.5 6.0 0.0 88.5
9.0 9.0 9.0 9.0 9.0 6.0 6.0
6.0 7.0 7.0 7.0 7.0 5.0 0.0
然后重复此过程,直到 df1 中的所有行都已循环并经过相同的过程...因此可能需要使用 match 函数进行某种双循环。我正在努力寻找任何解决方案
使用的代码
row_df1 <- 1
row_df2 <- 1
for (row_df2 in seq(1,nrow(Calendar$Jan))) {
for (day in week) {
if (Calendar$Jan[row_df2, 'Day'] == day) {
Calendar$Jan[row_df2,'Hours'] <- Calctable[row_df1,day]
row_df2 <- row_df2 + 1
}
}
}
错误信息
Error in for (day in week) { : invalid for() loop sequence
非常感谢
【问题讨论】: