在R中将相同的行组合成一行

时间:2013-12-30 22:33:52

标签: r merge similarity

所以我有一个如下所示的数据框:

   Animal    Food   LikeScore   
1   cat      fish      98
2   cat      milk      72
3   cat     shrimp     88
4   dog     steak      99
5   dog      poo       55

我想生成一个数据框,将动物组合成一行,将他们喜欢的所有食物列表放在同一行的另一列中(无论得分如何):

    Animal          Food
1    cat      fish, milk, shrimp
2    dog      steak, poo

R中是否有可以执行此操作的功能? 谢谢!

1 个答案:

答案 0 :(得分:2)

我喜欢使用plyr

library(plyr)
ddply(df, .(Animal), summarize, Food = paste(Food, collapse = ', '))

请注意,代码未经测试,因为您的示例不可重现。但是,使用mtcars的示例表明它有效:

ddply(mtcars, .(gear), summarize, carb = paste(carb, collapse = ', '))
  gear                                        carb
1    3 1, 2, 1, 4, 3, 3, 3, 4, 4, 4, 1, 2, 2, 4, 2
2    4          4, 4, 1, 2, 2, 4, 4, 1, 2, 1, 1, 2
3    5                               2, 2, 4, 6, 8