我有一个从关系数据库导出的大型数据帧。我想基于主键列返回唯一行,同时组合来自所有其他行的观察。我试图使用gather()来做到这一点但到目前为止没有运气。以下是原始数据框的简化示例:
library(dplyr)
key <- c(rep(seq(1:3), 2))
x <- c("a", "b", "c", "d", "e", "f")
y <- rep(c("foo", "bar"), 3)
df <- data_frame(key, x, y)
df
key x y
<int> <chr> <chr>
1 1 a foo
2 2 b bar
3 3 c foo
4 1 d bar
5 2 e foo
6 3 f bar
我想要返回的数据框:
df
key x y
<int> <chr> <chr>
1 1 a, d foo, bar
2 2 b, e bar, foo
3 3 c, f foo, bar
我试过
答案 0 :(得分:0)
group_by
key
变量,然后summarise
其他变量为lists
。调用data.frame
而不是data_frame
将以您指定的格式返回数据,而不是列表列。
library(dplyr)
df %>%
group_by(key) %>%
summarise(x = list(x),
y = list(y)) %>%
data.frame()
key x y
1 a, d foo, bar
2 b, e bar, foo
3 c, f foo, bar
或
df %>%
group_by(key) %>%
summarise_all(list) %>%
data.frame()
在没有指定列名的情况下做同样的事情。