只需將tapply
摘要與原始數據幀「合併」即merge
即可。
由於您沒有提供示例數據,我做了一些。相應地修改。
n = 1000
id = sample(1:10, n, replace=T)
year = sample(2000:2011, n, replace=T)
destination = sample(LETTERS[1:6], n, replace=T)
`destination-year` = paste(destination, year, sep='-')
dat = data.frame(id, year, destination, `destination-year`)
現在列出您的摘要。請注意我如何重新格式化爲數據框,並使名稱與原始數據匹配。
incumbents = tapply(id, `destination-year`, function(x) length(unique(x)))
incumbents = data.frame(`destination-year`=names(incumbents), incumbents)
最後,合併早在與原始數據:
merge(dat, incumbents)
順便說一句,而不是結合destination
和year
到第三個變量,像它看起來你已經做了, tapply
可以直接處理兩個變量作爲列表:
incumbents = melt(tapply(id, list(destination=destination, year=year), function(x) length(unique(x))))
對不起,沒有示例數據...新手錯誤 – 2012-02-13 23:45:54