首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tidyeval对因子级别进行排序

使用tidyeval对因子级别进行排序
EN

Stack Overflow用户
提问于 2018-09-11 23:03:14
回答 1查看 50关注 0票数 1

我有一个看起来像这样的dataframe

代码语言:javascript
复制
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的级别如下所示:

代码语言:javascript
复制
> my_df$x
[1] V1 V2 V3 V4
Levels: V1 V2 V3 V4

我希望能够基于order列对x级别进行重新排序,如下所示:

代码语言:javascript
复制
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)传递给函数。

EN

回答 1

Stack Overflow用户

发布于 2018-09-11 23:15:33

使用forcats的潜在解决方案应该是这样的:

代码语言:javascript
复制
my_fn <- function(df, x, o) {

  o_ <- enquo(o)
  x_ <- enquo(x)
  x_name <- quo_name(x_)

  df %>% 
    mutate(:= fct_reorder(x_, !!o_))
}
my_fn(my_df, x, order)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52278951

复制
相关文章

相似问题

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