r - 按第一组元素排序 dplyr

标签 r 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 执行此操作的确切顺序的数据框,对吗?如果我弄错了请告诉我。

谢谢!

最佳答案

您的数据创建代码未运行,您重复了 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)

然后您可以执行以下操作以接收按 2012 年百分比顺序按州组排序的数据帧(长格式):

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年的数据框。

关于r - 按第一组元素排序 dplyr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35645026/

相关文章:

r - R中带有分组列的ggplot2条形图,如何取消堆叠?

r - 将 dplyr mutate_at 与自定义函数一起使用

r - Dplyr:如何分组(全部)

R - (Tidyverse) 将多个观测值压缩为一个

r - 将一个 dplyr "do"函数的结果传递给另一个函数

r - 选择至少具有某一特定值之一的组

mysql - R RMySQL 将大整数作为字符串获取

r - 增加轴刻度数

r - 将自定义文本插入到ggplot2

r - 按组和间隔坐标折叠 data.frame