请问,有两列变量,变量a是数值变量,b 是分类变量。首先,我以变量b为条件变量,对变量a的值进行了从大到小的排序。现在我想添加一个变量c,变量c的值就是变量a在变量b不同分类中的排序位置,请问,如何操作。谢谢!
分组赋值
你可以把你现在已有的R语句发上来,这样大家好在后面继续添。
year province growth
2010 11 13
2010 12 14
2010 13 15
2010 14 16
2010 15 18
2010 16 20
2011 11 21
2011 12 22
2011 13 24
2011 14 16
2011 15 18
2011 16 20
2012 11 22
2012 12 17
2012 13 14
2012 14 35
2012 15 21
2012 16 13
2013 11 3
2013 12 4
2013 13 6
2013 14 7
2013 15 9
2013 16 10
有如上数据,我就是想再生成一列,为各省的growth分别在2010、2011、2012和2013年的排名。谢谢
2010 11 13
2010 12 14
2010 13 15
2010 14 16
2010 15 18
2010 16 20
2011 11 21
2011 12 22
2011 13 24
2011 14 16
2011 15 18
2011 16 20
2012 11 22
2012 12 17
2012 13 14
2012 14 35
2012 15 21
2012 16 13
2013 11 3
2013 12 4
2013 13 6
2013 14 7
2013 15 9
2013 16 10
有如上数据,我就是想再生成一列,为各省的growth分别在2010、2011、2012和2013年的排名。谢谢
year <- rep(seq(2010,2013),each = 6)
province <- rep(seq(11,16),time = 4)
growth <- c(seq(13,16),18,seq(20,22),24,seq(16,22,2),
17,14,35,21,13,3,4,6,7,9,10)
df <- data.frame(year,province,growth)
library(plyr)
myfun <- function(data)
{
df_rank <- rank(data$growth)
return(df_rank)
}
rank <- daply(df,.(year),myfun)
rank <- c(rank[1,],rank[2,],rank[3,],rank[4,])
df$rank <- rank
df
14 天 后
还是上述问题,请问,如果每一年的省份数量不一致,我应该如何进行上述分组排序呢?
可以这样:
library(dplyr)
df=data.frame(year=rep(seq(2010,2013),each=6),
province=sample(11:16,24,TRUE),
growth=sample(13:22,24,TRUE))
df=df%>%group_by(province)%>%mutate(Rank=row_number(desc(growth)))%>%arrange(desc(Rank))
如果需要按year和province分组,就这样
library(dplyr)
df=data.frame(year=rep(seq(2010,2013),each=6),
province=sample(11:16,24,TRUE),
growth=sample(13:22,24,TRUE))
df=df%>%group_by(year,province)%>%mutate(Rank=row_number(desc(growth)))%>%arrange(desc(Rank))