2

たとえば、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     basketball
     1         soccer
     2  pingpang ball

テーブル1とテーブル2を次のようなdata.frameに結合するにはどうすればよいですか?

  id   name age                       interests
1  1   Jack  21  (football, basketball, soccer)
2  2  James  40                 (pingpang ball)

最も簡単な方法でplyrを使用してこれらを結合するにはどうすればよいですか?

4

2 に答える 2

3

plyrでこれを解決する方法を説明することはできませんが、baseで解決することはできます。

dat3 <- aggregate(interests~id, dat2, paste, collapse=",")
merge(dat1, dat3, "id")

編集:本当に括弧が必要な場合は、次を使用できます:

ppaste <- function(x) paste0("(", gsub("^\\s+|\\s+$", "", paste(x, collapse = ",")), ")")
dat3 <- aggregate(interests~id, dat2, ppaste)
merge(dat1, dat3, "id")
于 2012-12-10T05:35:53.923 に答える
1

タイラーの例を使用して:

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
于 2012-12-10T07:09:00.683 に答える