2015-05-21 73 views
0

兩組數據:R:獲得匹配的數據幀的列表值

people <- read.table(text=" 
pid 
1 
2 
3 
4 
", header=TRUE) 

comps <- read.table(text=" 
pid comp rank 
1 1 0 
1 3 1 
1 2 2 
2 4 0 
2 1 1 
2 3 2 
3 1 0 
3 2 1 
3 4 2 
", header=TRUE) 

試圖讓每個獨特pid數據幀與他們比較的列表,如:

pid comps 
1 1,3,2 
2 4,1,3 
3 1,2,4 

燦「T相當那裏..

+2

'data [,。(value = paste(value,collapse =「」)),by = group]' – Soheil

回答

0

你可以用aggregate做到這一點:

aggregate(comp~pid, comps, paste, collapse=",") 
# pid comp 
# 1 1 1,3,2 
# 2 2 4,1,3 
# 3 3 1,2,4 
+0

非常好。有沒有辦法添加第三列? – Wells

+0

@明白,只需返回一個向量,例如'彙總(comp〜pid,comps,function(x)c(paste(x,collapse =「,」),「A」))'' – josliber