0

我已经搜索了该网站,但无法找到解决我的问题的方法。我有一个示例数据集,如下所示:

id,l1
1,3
2,5
3,6
1,5
2,4
3,6

id 是一个名义变量,代表一个唯一用户,另一个是计数变量。

我想要的是按用户找出 l1 的分布。因此,查看我给定的数据集,id=1 的总数为 l1 = 8;id = 2 的总数为 l1 = 9,id=3 的总数为 l1 = 12。

我试图根据 id 找出 l1 的分布,但我被卡住了。我无法弄清楚如何将相关列组合在一起,然后找到分布或至少构建直方图。我可以用一个变量构造一个直方图,但我不能用一个名义变量构造一个排序的频率分布。

4

1 回答 1

2

base R方法是使用tapply

如果您的 data.frame 被调用aa

sumById <- with(aa, tapply(l1,id, sum)))

barplot(sumById)

在此处输入图像描述

如果您想在不明确预设的情况下绘制结果,那么您可以使用ggplot2stat_summary

library(ggplot2)
ggplot(aa, aes(x = id, y = l1)) + stat_summary(fun.y = 'sum', geom = 'bar')

在此处输入图像描述

于 2013-03-19T02:55:37.940 回答