R中数据的高效复制

时间:2015-04-17 07:07:03

标签: r dataframe

我有

形式的数据
dates = as.Date(c("2015-04-07","2015-04-07","2015-04-08","2015-04-08"))
hour = rep(c(1,2),2)
value = c(3,6,8,4)
example.data = data.frame(dates,hour,value)

给出了

      dates hour value
1 2015-04-07    1     3
2 2015-04-07    2     6
3 2015-04-08    1     8
4 2015-04-08    2     4

我希望通过不断的填充来生成每一刻钟的数据。

结果应为

      dates hour  qhour value
1 2015-04-07    1   0     3
2 2015-04-07    1   1     3
3 2015-04-07    1   2     3
4 2015-04-07    1   3     3
5 2015-04-07    2   0     6
6 2015-04-07    2   1     6
7 2015-04-07    2   2     6

等等。因此,如果在相应的小时内每小时一个小时,则每小时复制每个小时的每个值。可以使用sqldf或类似的东西来完成这项工作。当然,我的数据集比例子大得多。

1 个答案:

答案 0 :(得分:3)

这是否足够有效?

DF <- example.data[rep(seq_len(nrow(example.data)), each = 4),]
DF$qhour <- 0:3
#         dates hour value qhour
#1   2015-04-07    1     3     0
#1.1 2015-04-07    1     3     1
#1.2 2015-04-07    1     3     2
#1.3 2015-04-07    1     3     3
#2   2015-04-07    2     6     0
#2.1 2015-04-07    2     6     1
#2.2 2015-04-07    2     6     2
#2.3 2015-04-07    2     6     3
#3   2015-04-08    1     8     0
#3.1 2015-04-08    1     8     1
#3.2 2015-04-08    1     8     2
#3.3 2015-04-08    1     8     3
#4   2015-04-08    2     4     0
#4.1 2015-04-08    2     4     1
#4.2 2015-04-08    2     4     2
#4.3 2015-04-08    2     4     3