2015-09-27 142 views
2

我有數據比較美國各州的黑色星期五和加拿大的節禮日的銷售情況。對於每個購物假期,我都有一個包含流行項目的數據框,這些項目已合併在一起。每個假期的廣告比例也有所不同。數據框看起來是這樣的:根據行子集對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

回答

2
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

相關問題