Хорошо, я знаю, что fct_reorder()
позволяет вам переупорядочивать факторы на основе другого столбца, но из того, что я могу сказать, вы должны предоставить некоторую функцию (среднее значение, медиана и т. Д. c.), Которая работает во втором столбце. чтобы он знал как упорядочить столбцы. Но что, если у вас есть другой столбец, который сортирует так, как вы хотите, чтобы ваш столбец был выровнен / упорядочен как ?
Например, у меня есть столбец ACADEMIC_PERIOD_DESC
, который дает академию c период по-английски sh: «Осень 2019», «Весна 2020» и т. Д. c. У меня есть соответствующий столбец ACADEMIC_PERIOD
, который представляет собой числовой код c, соответствующий академическому c период: «201940», «202020» и др. 1031 *. Это столбец, которым я хочу выровнять 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)
Есть ли более элегантное решение для forsats / tidyverse? Я что-то пропустил?
Спасибо!