在 R 中使用 reshape 时如何将多个值放在一行中?

How to put several values in one row when use reshape in R?

我有一个采用这种格式的框架

 "x" "y"
1 A text1
2 A text2
3 A text3
4 B text4
5 B text4
6 B text5
7 C text6

而我需要变成这样:

 "x" "y"    
1 A text1;text2;tex3
2 B text4;text5
3 C text6

可能可以通过重塑或重铸来完成,但我不确定如何将文本值保持在同一行中。 谢谢!

您可以使用 dplyr 执行以下操作:

library(dplyr)

### Data is set from "dput" output.
data_xy <- structure(list(x = c("A", "A", "A", "B", "B", "B", "C"), y = c("text1", "text2", "text3", "text4", "text4", "text5", "text6")), class = "data.frame", .Names = c("x", "y"), row.names = c(NA, -7L))
data_xy %>%
    group_by(x) %>%
    summarise(y = paste(unique(y), collapse=";"))

##   x                 y
## 1 A text1;text2;text3
## 2 B       text4;text5
## 3 C             text6

## OR

data_xy %>%
    group_by(x) %>%
    summarise_each(funs(paste(unique(.), collapse=";")))

由于您的输出显示 B 仅出现一次 text4,因此使用了 unique

我们可以使用data.table

library(data.table)
setDT(df1)[, .(y= toString(y)), by = x]