0

我有一个这样的数据框:

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 等编程语言中缺乏基本数据结构,这让我的工作不方便。

4

2 回答 2

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
# 

我个人更喜欢使用Ito,paste以便以后需要时可以lapply()在该列上使用。

于 2013-01-23T06:02:57.813 回答
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
于 2013-01-23T06:26:03.373 回答