簡體   English   中英

按第一組元素dplyr排序

[英]sort by first group element dplyr

可能是一個簡單的答案,但證明令人驚訝的挑戰。 我的數據如下所示,狀態百分比發生在三年內:

State<-c('Assam','Bihar','Chandigarh','Delhi','Goa')
2012<-c(96, 95, 94, 92, 99)
2013<-c(97, 97, 94, 93, 100)
2014<-c(97, 98, 96, 95, 100)

df<-data.frame(State, 2013, 2013, 2014)

我試圖按國家分組,安排年份,然后通過提高2012年的百分比來安排國家組。 還需要一個單獨的df,按照2014年的百分比排列各州。

這就是我所擁有的:

library(reshape2)
library(dplyr)

dfmelt<-melt(df, id = 'State')
colnames(dfmelt)<-c('State','Year','Percent')

dfmelt<-dfmelt %>% arrange(Percent) %>% group_by(State) %>% arrange(Year)

嘗試了最后一行的一百萬種組合並且無法破解它。 看過類似的問題,但這里沒有總結或突變,只是純粹的重新排列,我被卡住了。

最終我創造了2個點圖,其中一個在Y軸上按2012年的百分比排名,一個按2014年的百分比排名。 圖一我需要ggplot的確切順序的數據幀,對吧? 如果我弄錯了,請告訴我。

謝謝!

如果您的目標是在ggplot訂購軸,則可以使用df原樣進行操作。

你只需要在ggplot使用'reorder'

df<-data.frame("State" = c('Assam','Bihar','Chandigarh','Delhi','Goa'),
                             "2012" = c(96, 95, 94, 92, 99),
                             "2013" = c(97, 97, 94, 93, 100),
                             "2014" = c(97, 98, 96, 95, 100))

library(ggplot2)

ggplot(data=df, aes(x=reorder(State, X2012), y=X2014)) +
    geom_bar(stat="identity")

您的數據創建代碼未運行,並且您重復了2013年。

以下是生成該數據的代碼:

State <- c('Assam','Bihar','Chandigarh','Delhi','Goa')
p2012 <- c(96, 95, 94, 92, 99)
p2013 <- c(97, 97, 94, 93, 100)
p2014 <- c(97, 98, 96, 95, 100)
df <- data.frame(State, p2012, p2013, p2014)

然后,您可以執行以下操作以接收按州百分比排序的狀態組排序的數據框(長格式):

library(dplyr)
library(tidyr)
df %>%
  gather(Year, Percentage, -State) %>%
  group_by(State) %>%
  mutate(Percentage2012 = Percentage[Year == 'p2012']) %>%
  ungroup() %>%
  arrange(Percentage2012, State, Year) %>%
  select(-Percentage2012)

得出的數據框如下:

Source: local data frame [15 x 3]

        State   Year Percentage
       (fctr) (fctr)      (dbl)
1       Delhi  p2012         92
2       Delhi  p2013         93
3       Delhi  p2014         95
4  Chandigarh  p2012         94
5  Chandigarh  p2013         94
6  Chandigarh  p2014         96
7       Bihar  p2012         95
8       Bihar  p2013         97
9       Bihar  p2014         98
10      Assam  p2012         96
11      Assam  p2013         97
12      Assam  p2014         97
13        Goa  p2012         99
14        Goa  p2013        100
15        Goa  p2014        100

希望這可以幫助。 當然,您只需稍微修改上述代碼即可創建2014年數據框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM