【发布时间】:2017-12-23 16:18:02
【问题描述】:
如果我构造一个数据框为
# constructing df
a <- c(rep("A", 3), rep("B", 3), rep("A",2))
b <- c(1,1,2,4,1,1,2,2)
#c <- c("ir", "ir", "br", "ir", "us", "us", "ir", "br")
c <- c(1, 2, 3, 4, 4, 4, 4, 5)
df <- data.frame(a,b,c)
我可以通过以下方式汇总:
df_red <- aggregate(list(track = c), df[,c("a", "b")], '[')
将其分解回以前的最佳方式是什么?
换句话说,我该如何转换:
a b track
1 A 1 1, 2
2 B 1 4, 4
3 A 2 3, 4, 5
4 B 4 4
到这里:
a b c
1 A 1 1
2 A 1 2
3 A 2 3
4 B 4 4
5 B 1 4
6 B 1 4
7 A 2 4
8 A 2 5
【问题讨论】:
-
在基础 R 中,您可以使用
cbind(df_red[rep(seq_along(df_red$track), lengths(df_red$track)), 1:2], track=unlist(df_red$track))。 -
试试
library(tidyr);unnest(df_read)
标签: r dataframe aggregation