我有一個數據幀,看起來像:R聚合基於多個列,然後合併到數據框中?
id<-c(1,1,1,3,3)
date1<-c("23-01-08","01-11-07","30-11-07","17-12-07","12-12-08")
type<-c("A","B","A","B","B")
df<-data.frame(id,date,type)
df$date<-as.Date(as.character(df$date), format = "%d-%m-%y")
我想是添加包含每個ID爲每種類型的最早日期的新列。這第一次嘗試正常工作,並基於唯一標識進行聚合和合並。
d = aggregate(df$date, by=list(df$id), min)
df2 = merge(df, d, by.x="id", by.y="Group.1")
我想,雖然是也是類型進行篩選,並得到這樣的結果:
data.frame(df2, desired=c("2007-11-30","2007-11-01", "2007-11-30","2007-12-17","2007-12-17"))
我已經嘗試了很多的可能性。我真的認爲這可以用列表來完成,但我在一個損失如何?
d = aggregate(df$date, by=list(df$id, df$type), min)
# And merge the result of aggregate with the original data frame
df2 = merge(df,d,by.x=list("id","type"),by.y=list("Group.1","Group.2"))
對於這個簡單的例子,我可以只是類型分成自己的DF,建立新的列,然後結合由此產生的2 dfs,但實際上有很多類型和第三列也必須過濾類似,這將不實際...
謝謝!
你有date1'和'date'之間'一個錯字錯配'@thelatemail你說得對df' – thelatemail
。我走了一圈,讓這個日期列... – Soran