我有一个大的数据框(1616610行,255列),我需要根据键将每一列的唯一值粘合在一起。
例如:
我需要的是将每个255列中的唯一值聚合,并返回一个新的数据框,对于每个唯一值使用逗号分隔。像这样:
例如:
> data = data.frame(a=c(1,1,1,2,2,3),
b=c("apples", "oranges", "apples", "apples", "apples", "grapefruit"),
c=c(12, 22, 22, 45, 67, 28),
d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"))
> data
a b c d
1 1 apples 12 Monday
2 1 oranges 22 Monday
3 1 apples 22 Monday
4 2 apples 45 Tuesday
5 2 apples 67 Wednesday
6 3 grapefruit 28 Tuesday
我需要的是将每个255列中的唯一值聚合,并返回一个新的数据框,对于每个唯一值使用逗号分隔。像这样:
a b c d
1 1 apples, oranges 12, 22 Monday
2 2 apples 45, 67 Tuesday, Wednesday
3 3 grapefruit 28 Thursday
我已经尝试使用 aggregate
,如下:
output <- aggregate(data, by=list(data$a), paste, collapse=", ")
但对于这样规模的数据帧,它已经花费了太多时间(几个小时),而且往往我不得不完全终止进程。除此之外,这将汇总所有值,而不仅仅是唯一的值。有没有人有任何关于以下方面的提示:
1)如何改善大型数据集的聚合时间
2)然后获取每个字段的唯一值
顺便说一句,这是我在SO上的第一个帖子,所以感谢您的耐心。
data.table
。我不太擅长它的语法,但这里有一些人是专家。 - alistairedata.table
在处理大型数据集方面表现很好,并尝试过使用它,但似乎无法理解这个问题的语法。 - bab2155