根据行子集对r进行重新排序
问题描述:
我有数据比较美国各州的黑色星期五和加拿大的节礼日的销售情况。对于每个购物假期,我都有一个包含流行项目的数据框,这些项目已合并在一起。每个假期的广告比例也有所不同。数据框看起来是这样的:根据行子集对r进行重新排序
+---------+----------+-----------+---------+
| Item | AdBudget | Holiday | AmtSold |
+---------+----------+-----------+---------+
| TV | $1000 | BlackFri | 1800 |
| Laptop | $2300 | BlackFri | 1400 |
| DVDs | $100 | BlackFri | 300 |
| Blender | $200 | BlackFri | 50 |
| TV | $1200 | BoxingDay | 1000 |
| Laptop | $1200 | BoxingDay | 850 |
| Blender | $500 | BoxingDay | 76 |
| DVDs | $400 | BoxingDay | 35 |
+---------+----------+-----------+---------+
项因子的自动排序是按字母顺序(即,搅拌机,DVD光盘,笔记本电脑,电视)。我想要的订购是(电视,笔记本电脑,搅拌机,DVD)。
我想在节礼日订购AmtSold的ITEM系数。你能帮我使用重新排序来做到这一点吗?
谢谢。
编辑
一对夫妇评论者都问我输出数据帧将是什么样子。为了澄清,我不知道也不关心我是否重新排序数据帧。我将这些数据放入ggplot2并制作一个条形图。像这样:
ggplot(dataframe,aes(x=Item,y=AmtSold))
+geom_bar(stat="identity")
+ facet_grid(Holiday ~ .)
同样的答案to this question about ggplot2 bar graphs on factors GGPLOT2订单说明基于字母(或者字母数字?)责令因子变量。
在我而言,这意味着我的条形图将在下面的命令吧: 搅拌机,DVD光盘,笔记本电脑,电视
我想卖量的顺序吧(最高到最低)上拳击一天,顺序如下: 电视,手提电脑,搅拌机,DVD光盘
一种可能性是,做到这一点明确,因为这样
dataframe$Item <- factor(dataframe$Item, levels = c("TV","Laptop","Blender","DVDs"))
,但我想以编程方式做到这一点。
答
lvls <- as.character(df$Item[df$Holiday=="BoxingDay"])[order(df$AmtSold[df$Holiday=="BoxingDay"])]
df$Item <- factor(df$Item,levels=lvls)
library(ggplot2)
ggplot(df,aes(x=Item,y=AmtSold))+
geom_bar(aes(fill=Holiday), stat="identity") +
facet_grid(Holiday ~ .)
你没有做你的工作,问一个良好的R第。它应该包含一个简单的自包含示例。 – RobertH
感谢您的反馈 - 编辑完成 – CHN
你能说明这个重新排序会做你的示例data.frame? – bourbaki4481472