You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用mutate将city转为factor并按code列指定水平顺序

解决方案

要实现按code列的顺序将city转为factor类型,同时不用手动指定levels,有两种简洁的实现方式:

方法1:使用forcats包的fct_reorder函数(推荐)

fct_reorder可以直接根据指定变量的顺序重新设置factor的levels,代码如下:

library(dplyr)
library(forcats)

df %>%
  mutate(city = fct_reorder(city, code))
  • 该函数默认按code的升序排列city的levels,若需要降序,可添加参数.desc = TRUE:
    df %>%
      mutate(city = fct_reorder(city, code, .desc = TRUE))
    

方法2:仅用dplyr实现

先按code排序,再将排序后的city列作为factor的levels:

library(dplyr)

df %>%
  arrange(code) %>%
  mutate(city = factor(city, levels = .$city))
  • arrange(code)确保数据按code顺序排列,随后levels = .$city直接取排序后的city值作为factor的层级,无需手动输入。

内容的提问来源于stack exchange,提问作者uow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:05:21