首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr和forcats包根据分组变量中的值更改因子级别

使用dplyr和forcats包根据分组变量中的值更改因子级别
EN

Stack Overflow用户
提问于 2021-10-26 15:50:44
回答 1查看 34关注 0票数 2

我正在尝试根据来自另一个变量的一些值来更改因子的级别。我将在一个示例中展示它。我有这样一张桌子:

代码语言:javascript
复制
library(tidyverse)

set.seed(1)
df = tibble(
  group = factor(rep(c("a", "b", "c", "d"), each = 5)),
  x = c(rnorm(5, 0, 1), rnorm(5, 0, 2), rnorm(5, 0, 1.5), rnorm(5, 0, 3))
)

我想在变量x的标准差的减小值中改变group因子的水平。

我设法做到了这一点:

代码语言:javascript
复制
lev = df %>% group_by(group) %>% 
  summarise(sd = sd(x)) %>% 
  arrange(desc(sd))

df = df %>% mutate(group = fct_relevel(group, as.character(lev$group)))

但是,我不喜欢这个解决方案,因为它需要创建一个辅助lev表,这是我希望避免的。有没有人知道如何以一种更简单、更透明的方式实现这种效果,这是典型的dplyr语义。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-27 17:10:38

你要找的是forcats::fct_reorder()

代码语言:javascript
复制
df = df %>% mutate(group = fct_reorder(group, x, sd, .desc = TRUE))
df %>% group_by(group) %>% summarise(sd=sd(x))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69726252

复制
相关文章

相似问题

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