我在网站上搜索过但无法找到解决问题的方法。我有一个样本数据集如下:
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的分布,但我被卡住了。我无法弄清楚如何将相关列组合在一起,然后找到分布或至少构建直方图。我可以构建一个带有一个变量的直方图,但我不能通过一个名义变量构建一个排名的频率分布。
答案 0 :(得分:2)
base
R
方法是使用tapply
如果您的data.frame被调用aa
sumById <- with(aa, tapply(l1,id, sum)))
barplot(sumById)
如果您想在没有明确推测的情况下绘制结果,那么您可以使用ggplot2
和stat_summary
library(ggplot2)
ggplot(aa, aes(x = id, y = l1)) + stat_summary(fun.y = 'sum', geom = 'bar')