我试图制作数据集中项目频率的图表,但我在绘制时遇到此错误。
不知道如何自动选择类型对象的比例 data.frame。违约持续。
错误:美学必须是长度1或与数据相同(39123):x
这是我使用的数据模型:
product_id order_id product_name
1 41899 330425 Oreo Ice Cream Sandwiches
2 122580 1707573 Mint Chip
3 146891 622568 Coffee Ice Cream
4 134292 1284843 Belgian Milk Chocolate Gelato
5 146530 2693694 Variety Pack Ice Cream Bars
数据帧的str输出是(前5个值):
'data.frame': 5 obs. of 3 variables:
$ product_id : int 41899 122580 146891 134292 146530
$ order_id : int 330425 1707573 622568 1284843 2693694
$ product_name: Factor w/ 49688 levels "'Swingtop' Premium Lager",..: 28573 25871 10030 4236 47274
我已尝试对绘图代码进行了多处更改,但我遇到了不同的错误。
这是我正在使用的代码。
orders_group <- group_by(orders_products,order_id)
orders_summ <- as.data.frame(summarise(orders_group, n_items = count(product_name)))
ggplot(orders_summ,aes(x=n_items))+
geom_histogram(stat="count")+#geom_histogram(fill="indianred", bins = 100000) +
geom_rug()+
coord_cartesian(xlim=c(0,80))+
scale_fill_manual(values = getPalette(colourCount))
答案 0 :(得分:1)
我认为这源于您错误地使用count()
这一事实。 count()
会产生一个tibble,当您调用summarise
时,会在数据框内产生奇怪的反应。
我必须运行,但乍一看,您似乎创建了一列数据帧(或类似的东西),这可以解释您的ggplot错误。我相信你要找的是:
orders_summ <- orders_products %>%
group_by(order_id) %>% # normally this step would have produced your orders_group
summarise(n_items = n())
然后尝试运行你的ggplot代码。