【发布时间】:2018-04-29 00:38:09
【问题描述】:
我想通过添加一个名为Average 的新列将两个数据集相互连接。此列是Date 和Date - diff 之间的平均持续时间。我有两个数据集,第一个叫做data,看起来像这样:
Date Weight diff Loc.nr
2013-01-24 1040 7 2
2013-01-31 1000 7 2
2013-01-19 500 4 9
2013-01-23 1040 4 9
2013-01-28 415 5 9
2013-01-31 650 3 9
另一个叫Rain.duration,在Duration列中是当天下雨的小时数。该数据集如下所示:
Date Duration
2013-01-14 4.5
2013-01-15 0.0
2013-01-16 6.9
2013-01-17 0.0
2013-01-18 1.8
2013-01-19 2.1
2013-01-20 0.0
2013-01-21 0.0
2013-01-22 4.3
2013-01-23 0.0
2013-01-24 7.5
2013-01-25 4.7
2013-01-26 0.0
2013-01-27 0.7
2013-01-28 5.0
2013-01-29 0.0
2013-01-30 3.1
2013-01-31 2.8
我为此编写了一个代码:
for(i in 1:nrow(data)) {
for(j in 1:nrow(Rain.duration)) {
if(data$Date[i] == Rain.duration$Date[j]) {
average <- as.array(Rain.duration$Duration[(j-(data$diff[i])):j])
j <- nrow(Rain.duration)
}
}
data$Average[i] <- mean(average)
}
这段代码的问题在于,由于我的数据集的大小,运行大约需要 3 天。有没有更快的方法来做到这一点?
我的预期结果是:
Date Weight diff Loc.nr Average
2013-01-24 1040 7 2 1.96
2013-01-31 1000 7 2 2.98
2013-01-19 500 4 9 2.16
2013-01-23 1040 4 9 1.28
2013-01-28 415 5 9 2.98
2013-01-31 650 3 9 2.73
【问题讨论】:
-
也许我误读了您的代码,但您是否试图获取每个日期的平均持续时间?您在预期输出中的平均值不是每个日期的平均持续时间,但也许这只是填充数据?
-
我想要来自
data的Date和Date - diff之间间隔的平均值。 -
我不明白
Weather是如何在这里发挥作用的。Duration列与您要计算的内容有什么关系? -
我刚刚编辑了问题,但
duration是当天下雨的小时数。所以我想计算data$Date和data$Date - data$diff之间的平均下雨小时数。 -
这听起来类似于my question,任何答案有帮助吗?