Уровни факторов упорядочения с использованием tidyeval
У меня есть dataframe
который выглядит так:
my_df <- data.frame(
x = c("V1", "V2", "V3", "V4"),
score = c(1, 4, 6, 3),
order = c(1, 4, 3, 2)
)
Уровни my_df$x
выглядеть так:
> my_df$x
[1] V1 V2 V3 V4
Levels: V1 V2 V3 V4
Я хочу иметь возможность изменить порядок уровней x
на основе order
столбец как это:
my_df_ <- my_df %>%
mutate(x = factor(x, x[order]))
my_df_$x
[1] V1 V2 V3 V4
Levels: V1 V4 V3 V2
Но я хочу быть в состоянии сделать это в функции, используя tidyeval
и не могу для меня, как понять, как... Я счастлив, что могу передать любую строку ("x"
) или выражения (x
) к функции.
1 ответ
Потенциальное решение с использованием forcats
будет что-то вроде:
my_fn <- function(df, x, o) {
o_ <- enquo(o)
x_ <- enquo(x)
x_name <- quo_name(x_)
df %>%
mutate(!!x_name := fct_reorder(!!x_, !!o_))
}
my_fn(my_df, x, order)