我有一个非常大的数据集,我试图缩小。出于这个问题的目的,我将通过仅关注一些变量来简化它。我每隔5分钟从许多科目中抽取样本,持续3个小时,我想每两个时间段加在一起。我没有使用5分钟的间隔,而是希望切换到10分钟的间隔。
数据:
ID Time Measurement
A1 5 2
A1 10 3
A1 15 2
A1 20 4
A2 5 0
A2 10 3
A2 15 3
A2 20 0
我想把它变成:
ID Time Measurement
A1 10 5
A1 20 6
A2 10 3
A2 20 3
我如何在R?
中实现这一点答案 0 :(得分:1)
也许您可以某种方式使用findInterval
和aggregate
......或许如下所示:
mydf$newTime <- findInterval(mydf$Time, seq(1, 180, 10)) * 10
## Or, as suggested by G. Grothendieck
mydf$newTime <- 10 * ((mydf$Time - 5) %/% 10) + 10
&#34;是myDF&#34;现在看起来像这样:
mydf
# ID Time Measurement newTime
# 1 A1 5 2 10
# 2 A1 10 3 10
# 3 A1 15 2 20
# 4 A1 20 4 20
# 5 A2 5 0 10
# 6 A2 10 3 10
# 7 A2 15 3 20
# 8 A2 20 0 20
从这里开始,我们可以轻松使用aggregate
:
aggregate(Measurement ~ ID + newTime, mydf, sum)
# ID newTime Measurement
# 1 A1 10 5
# 2 A2 10 3
# 3 A1 20 6
# 4 A2 20 3
除了您的样本数据之外,我还没有测试过这个......