R数据集中的第一次和最后一次观察

时间:2016-10-14 23:21:56

标签: r date sequence

我有以下代码:

df1<-data.frame(rep(sample(1:100,5),4),(sample(seq(as.Date('2010/01/01'), as.Date('2016/01/01'), by="day"), 20)),rep("A",20))
names(df1)<-c("ID","Date","Letter")
df2<-data.frame(df1$ID,(sample(seq(as.Date('2010/01/01'),   as.Date('2016/01/01'), by="day"), 20)),rep("B",20))
names(df2)<-c("ID","Date","Letter")
df3<-data.frame(df1$ID,(sample(seq(as.Date('2010/01/01'),    as.Date('2016/01/01'), by="day"), 20)),rep("C",20))
names(df3)<-c("ID","Date","Letter")
data<-rbind(df1,df2,df3)

我要做的是找到每个字母和ID的第一个日期和最后日期

因此,结果将是一个四列数据帧,第一列是ID,第二列是Letter,第三列是第一次出现,第四列是最后一次出现。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

试试这个:

MIN <- aggregate(Date~ID+Letter, data, min)
MAX <- aggregate(Date~ID+Letter, data, max)
d <- merge(MIN, MAX, by = c("ID", "Letter"))

答案 1 :(得分:0)

使用data.table

library(data.table)
setDT(data)[, .(MINDate = min(Date), MAXDate = max(Date)), by = .(ID, Letter)]