使用R在一个单元格中显示多个值
假设有2个data.frames,例如:使用R在一个单元格中显示多个值,r,R,假设有2个data.frames,例如: dat1 <- read.table("[path_dat1]", header=TRUE, sep=",") id name age 1 Jack 21 2 James 40 dat2 <- read.table("[path_dat2]", header=TRUE, sep=",") id interests 1 football 1
dat1 <- read.table("[path_dat1]", header=TRUE, sep=",")
id name age
1 Jack 21
2 James 40
dat2 <- read.table("[path_dat2]", header=TRUE, sep=",")
id interests
1 football
1 basketball
1 soccer
2 pingpang ball
如何使用plyr以最简单的方式加入这些问题?我无法告诉您如何在plyr中解决此问题,但可以在base中:
dat3 <- aggregate(interests~id, dat2, paste, collapse=",")
merge(dat1, dat3, "id")
dat3我无法告诉您如何在plyr中解决此问题,但可以在base中:
dat3 <- aggregate(interests~id, dat2, paste, collapse=",")
merge(dat1, dat3, "id")
dat3使用泰勒的例子:
dat1$interests <- ave(dat1$id, dat1$id,
FUN=function(x) paste(dat2[ dat2$id %in% x, "interests"], collapse=",") )
> dat1
id name age interests
1 1 Jack 21 football, basketball, soccer
2 2 James 40 pingpang ball
dat1$利息dat1
身份证姓名年龄兴趣
杰克足球、篮球、足球
2詹姆斯40乒乓球
使用泰勒的例子:
dat1$interests <- ave(dat1$id, dat1$id,
FUN=function(x) paste(dat2[ dat2$id %in% x, "interests"], collapse=",") )
> dat1
id name age interests
1 1 Jack 21 football, basketball, soccer
2 2 James 40 pingpang ball
dat1$利息dat1
身份证姓名年龄兴趣
杰克足球、篮球、足球
2詹姆斯40乒乓球
请提供可实际加载到R中并进行检查的简短示例。@Jack Fu欢迎使用SO。我添加了Matthew要求的一个额外的足球箱,以确保它可以处理两个以上的实例。在以后的文章中,请提供一些类似于我所做的可复制的例子。这使得提供援助更加容易。这里有一个链接讨论了什么是好的可复制示例:请包含可以实际加载到R中并进行检查的简短示例。@Jack Fu欢迎使用此链接。我添加了Matthew要求的一个额外的足球箱,以确保它可以处理两个以上的实例。在以后的文章中,请提供一些类似于我所做的可复制的例子。这使得提供援助更加容易。这里有一个链接讨论了什么是好的可复制示例:谢谢。你的回答也简洁而鼓舞人心。谢谢。你的回答也简洁而鼓舞人心。