我有一个按日期时间列排序的日期框架,其中包括单个日期时间戳的多行。我想将每个单独的时间戳压缩成一行。数据框包含许多数据列,其中一些仅在时间戳更改时更改,但是,即使在唯一时间戳(例如 c1a-c2b)内,也有其他列在每一行上具有唯一值。对于这些列,我想在我的数据集中为所有已压缩为一个的行得到一个总和值(注意:每个唯一日期时间戳的行数各不相同)。
示例数据:
Data <- structure(list(datetime = structure(c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = c("01/04/2011 00:13", "31/03/2011 23:14"
), class = "factor"), dist = c(210L, 210L, 210L, 210L, 210L,
210L, 210L, 210L, 210L, 210L, 210L, 210L, 210L, 210L, 210L, 210L,
210L, 210L, 210L, 210L, 215L, 215L, 215L, 215L, 215L, 215L, 215L,
215L, 215L, 215L, 215L, 215L, 215L, 215L, 215L, 215L, 215L, 215L,
215L, 215L, 215L, 215L, 215L), n = c(8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L), c1a = c(184L, 184L, 200L, 200L, 200L, 220L,
220L, 220L, 220L, 220L, 220L, 220L, 220L, 220L, 220L, 200L, 200L,
200L, 200L, 200L, 200L, 200L, 200L, 200L, 100L, 100L, 100L, 100L,
100L, 100L, 100L, 100L, 100L, 100L, 70L, 70L, 70L, 70L, 70L,
70L, 70L, 70L, 70L), c1b = c(18.4, 18.4, 20, 20, 20, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 20, 20, 20, 20, 20, 20, 20, 20,
20, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 7, 7, 7, 7, 7, 7,
7, 7, 7), c2a = c(552L, 552L, 600L, 600L, 600L, 660L, 660L, 660L,
660L, 660L, 660L, 660L, 660L, 660L, 660L, 600L, 600L, 600L, 600L,
600L, 600L, 600L, 600L, 600L, 300L, 300L, 300L, 300L, 300L, 300L,
300L, 300L, 300L, 300L, 210L, 210L, 210L, 210L, 210L, 210L, 210L,
210L, 210L), c2b = c(55.2, 55.2, 60, 60, 60, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 60, 60, 60, 60, 60, 60, 60, 60, 60, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 21, 21, 21, 21, 21, 21, 21,
21, 21)), .Names = c("datetime", "dist", "n", "c1a", "c1b", "c2a",
"c2b"), class = "data.frame", row.names = c(NA, -43L))
像这样读入:
datetime dist n c1a c1b c2a c2b
31/03/2011 23:14 210 8 184 18.4 552 55.2
31/03/2011 23:14 210 8 184 18.4 552 55.2
31/03/2011 23:14 210 8 200 20 600 60 etc...
在我的输出数据框中,我还希望得到一个新列,其中列出了原始日期框架中每个唯一日期时间戳的行数。
我想结束的例子:
dt1 dist n c1a c1b c2a c2b row_sum
31/03/2011 23:14 210 8 4168 416.8 12504 1250.4 20
01/04/2011 00:13 215 5 2430 243 7290 729 23
我看过类似的功能,to.period
但它们并不完全符合我的要求。我将不胜感激任何建议。谢谢。