如何在R中聚合数据帧?

时间:2013-01-23 05:59:14

标签: r dataframe

我有一个这样的数据框:

user event score
1      2     0.5
1      3     0.2
2      3     0.7
3      1     0.9
3      4     0.1

我希望得到结果:

user event
1    2,3
2    3
3    1,4

我怎样才能在R中这样做?
有时,我认为R在Java或Python等编程语言中缺乏基础数据结构,这使我的工作变得不方便。

2 个答案:

答案 0 :(得分:2)

假设您的data.frame被称为mydata,请执行:

aggregate(event ~ user, mydata, I)

获取保留数字表示的列表或

aggregate(event ~ user, mydata, paste, collapse = ", ")

粘贴值以创建字符向量。

以下是不同存储方式的演示:

x1 <- aggregate(event ~ user, mydata, paste, collapse =",")
x2 <- aggregate(event ~ user, mydata, I)
x1$event
# [1] "2,3" "3"   "1,4"
x2$event
# $`0`
# [1] 2 3
# 
# $`1`
# [1] 3
# 
# $`2`
# [1] 1 4
# 

我个人更喜欢将I用于paste,以便我以后可以在该列上使用lapply()

答案 1 :(得分:1)

 data.frame(user=unique(dat$user), event=tapply(dat$event, dat$user, c)  )
#
  user event
1    1  2, 3
2    2     3
3    3  1, 4