我有以下代码:
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,第三列是第一次出现,第四列是最后一次出现。
任何帮助将不胜感激
答案 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)]