我有一个数据帧,包含一个ID
,这对于一个组中的每个元素都是一样的,两个日期时间以及这两者之间的时间间隔。其中一个日期时间对象是我的相关时间标记。现在我想获取由每个组的最早条目组成的数据框的子集。条目(特别是时间间隔)需要保持不变。返回组的第一行
我的第一种方法是根据1. ID和2.相关日期时间对帧进行排序。但是,我无法返回每个新组的第一个条目。
然后我一直在寻找aggregate()
以及ddply()
函数,但是我找不到一个选项,它们只是返回第一个条目而没有对时间间隔值应用聚合函数。
有没有一个(简单)的方法来完成这个?
ADDITION: 也许我不清楚加入我的aggregate()和ddply()的注释。我不一定需要汇总。鉴于数据框的排序方式是每个新组的第一行是我要查找的行,只需返回一个子集,其中每行都具有与以前不同的ID(这是每个新组的起始行)。
实施例的数据:
structure(list(ID = c(1454L, 1322L, 1454L, 1454L, 1855L, 1669L,
1727L, 1727L, 1488L), Line = structure(c(2L, 1L, 3L, 1L, 1L,
1L, 1L, 1L, 1L), .Label = c("A", "B", "C"), class = "factor"),
Start = structure(c(1357038060, 1357221074, 1357369644, 1357834170,
1357913412, 1358151763, 1358691675, 1358789411, 1359538400
), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1357110430,
1357365312, 1357564413, 1358230679, 1357978810, 1358674600,
1358853933, 1359531923, 1359568151), class = c("POSIXct",
"POSIXt"), tzone = ""), Interval = c(1206.16666666667, 2403.96666666667,
3246.15, 6608.48333333333, 1089.96666666667, 8713.95, 2704.3,
12375.2, 495.85)), .Names = c("ID", "Line", "Start", "End",
"Interval"), row.names = c(NA, -9L), class = "data.frame")
请提供与样本数据可再现例如优选使用'dput'。 – juba
'聚合(cols_to_aggregate〜grouping_var,yourdata,head,1)'可以做你需要的。 – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto啊,很好,我总是忘记'聚合'的公式形式。 – juba