gpt4 book ai didi

r - 按第一组元素排序 dplyr

转载 作者:行者123 更新时间:2023-12-04 11:51:51 26 4
gpt4 key购买 nike

可能是一个简单的答案,但事实证明却极具挑战性。我的数据如下所示,三年内各州的百分比:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com