首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于另一列重新排序的Forcats解决方案

基于另一列重新排序的Forcats解决方案
EN

Stack Overflow用户
提问于 2020-02-24 18:02:47
回答 1查看 238关注 0票数 1

好的,我知道fct_reorder()允许您根据另一列重新排序因子,但据我所知,您必须提供一些函数(均值、中值等)。在第二列上操作,以便它知道如何对列进行排序。但是,如果您有另一列按您希望您的列按原样排列/排序的方式排列,该怎么办?

例如,我有一个列ACADEMIC_PERIOD_DESC,它给出了英语学习时间:“2019年秋季”、“2020年春季”等等,还有一个相应的专栏“ACADEMIC_PERIOD”,它是一个与学期相对应的数字代码:"201940“、"202020”等等。这是我希望ACADEMIC_PERIOD_DESC被平平的一栏。

数据

代码语言:javascript
复制
df <- structure(list(ACADEMIC_PERIOD = c("200810", "200820", "200830", 
"200840", "200910", "200920", "200930", "200940", "201010", "201020"
), ACADEMIC_PERIOD_DESC = structure(1:10, .Label = c("J-Term 2008", 
"Spring 2008", "Summer 2008", "Fall 2008", "J-Term 2009", "Spring 2009", 
"Summer 2009", "Fall 2009", "J-Term 2010", "Spring 2010", "Summer 2010", 
"Fall 2010", "J-Term 2011", "Spring 2011", "Summer 2011", "Fall 2011", 
"J-Term 2012", "Spring 2012", "Summer 2012", "Fall 2012", "J-Term 2013", 
"Spring 2013", "Summer 2013", "Fall 2013", "Spring 2014", "Summer 2014", 
"Fall 2014", "J-Term 2015", "Spring 2015", "Summer 2015", "Fall 2015", 
"J-Term 2016", "Spring 2016", "Summer 2016", "Fall 2016", "J-Term 2017", 
"Spring 2017", "Summer 2017", "Fall 2017", "J-Term 2018", "Spring 2018", 
"Summer 2018", "Fall 2018", "J-Term 2019", "Spring 2019", "Summer 2019", 
"Fall 2019", "J-Term 2020", "Spring 2020"), class = "factor")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -10L))

即使不必要地应用中位数,我是否也应该这样做呢?

代码语言:javascript
复制
df %>% 
    mutate(ACADEMIC_PERIOD_DESC = fct_reorder(ACADEMIC_PERIOD_DESC, as.integer(ACADEMIC_PERIOD)))

我也知道我可以像这样使用基数R:

代码语言:javascript
复制
df$ACADEMIC_PERIOD_DESC <- reorder(df$ACADEMIC_PERIOD_DESC, df$ACADEMIC_PERIOD)

有没有更优雅的猫/蒂迪弗斯解决方案?我只是遗漏了什么吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-24 18:35:53

我们可以将.fun从默认的median更改为I,即获得如下值

代码语言:javascript
复制
library(dplyr)
library(forcats)
df %>% 
   mutate(ACADEMIC_PERIOD_DESC = fct_reorder(ACADEMIC_PERIOD_DESC, 
           as.integer(ACADEMIC_PERIOD), .fun = I))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60381594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档