在R中将相同的字符组合成一行
我有一个数据框,看起来像这样:在R中将相同的字符组合成一行,r,merge,similarity,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 我想生成一个数据框,将动物组合成一行,并将它们喜欢的所有食物的列表放在同一行的另一列中(不管分数): R中是否有一个函数可以做到这一点? 谢
Animal Food LikeScore
1 cat fish 98
2 cat milk 72
3 cat shrimp 88
4 dog steak 99
5 dog poo 55
我想生成一个数据框,将动物组合成一行,并将它们喜欢的所有食物的列表放在同一行的另一列中(不管分数):
R中是否有一个函数可以做到这一点?
谢谢 我喜欢使用
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
查看类似于
aggregate(Food~Animal,DF,paste,sep=“,”)
。虽然我认为您需要collapse=”,“
而不是sep=”,“
。
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