我有一个这样的数据框:
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 等编程语言中缺乏基本数据结构,这让我的工作不方便。
假设您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
to,paste
以便以后需要时可以lapply()
在该列上使用。
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