根据行子集对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")) 

,但我想以编程方式做到这一点。

+0

你没有做你的工作,问一个良好的R第。它应该包含一个简单的自包含示例。 – RobertH

+0

感谢您的反馈 - 编辑完成 – CHN

+0

你能说明这个重新排序会做你的示例data.frame? – bourbaki4481472

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 ~ .) 

+0

谢谢这是真的,它适用于我已经说明的例子,但是我正在使用的数据集实际上有数百个项目,为了简单起见,我已经删除了这些项目。混淆 – CHN

+0

那么你想要的订单是多少?这不是行的顺序。 – jlhoward

+0

@jihoward这是非常棒的!这正是我要找的。谢谢。 – CHN