1

わかりました、fct_reorder()別の列に基づいて因子を並べ替えることができることは知っていますが、私が知る限り、列を並べ替える方法を知るために、2 番目の列で動作する関数 (平均値、中央値など) を提供する必要があります。 . しかし、列をそのまま平準化/順序付けする方法でソートする別の列がある場合はどうなります?

たとえば、ACADEMIC_PERIOD_DESC「Fall 2019」、「Spring 2020」などの学期を英語で示す列があり、ACADEMIC_PERIOD学期に対応する数値コードである対応する列「201940」があります。 「202020」など、ACADEMIC_PERIOD_DESC平準化されたいコラムです。

データ

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))

不必要に中央値を適用しているにもかかわらず、次のことを行う必要がありますか?

df %>% 
    mutate(ACADEMIC_PERIOD_DESC = fct_reorder(ACADEMIC_PERIOD_DESC, as.integer(ACADEMIC_PERIOD)))

また、次のようにベース R を使用できることも知っています。

df$ACADEMIC_PERIOD_DESC <- reorder(df$ACADEMIC_PERIOD_DESC, df$ACADEMIC_PERIOD)

よりエレガントな forcats/tidyverse ソリューションはありますか? 何か足りないだけですか?

ありがとう!

4

1 に答える 1