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

如何为城市分配地区?R语言fct_collapse分组异常问题求助

问题排查与解决

你的代码只生成6个分组,大概率是以下两个原因之一:

1. 数据类型不匹配导致部分分组未匹配到数据

fct_collapse是针对因子或字符型变量做合并的,如果你的原cities列是数值型,而代码里用字符型(比如"1")去匹配数值(比如1),会导致对应分组找不到匹配的城市,这些分组就不会出现在结果里。

解决方法:

  • 先把cities转成字符型再合并:
df1 <- df %>%
  mutate(
    cities = fct_collapse(
      as.character(cities),
      "1" = c("1", "2", "3", "4","5","8"),  
      "2" = c("10", "24"),
      "3" = c("6", "7", "15", "16"),   
      "4" = c("20", "21", "22", "28", "29"),   
      "5" = c("9", "17", "18", "19"),   
      "6" = c("25", "26", "27", "30", "34"),   
      "7" = c("11", "12", "13", "14"),   
      "8" = c("23", "31", "32", "33")
    )
  )
  • 或者直接用数值作为匹配值(如果原列是数值型):
df1 <- df %>%
  mutate(
    cities = fct_collapse(
      cities,
      "1" = c(1, 2, 3, 4,5,8),  
      "2" = c(10, 24),
      "3" = c(6, 7, 15, 16),   
      "4" = c(20, 21, 22, 28, 29),   
      "5" = c(9, 17, 18, 19),   
      "6" = c(25, 26, 27, 30, 34),   
      "7" = c(11, 12, 13, 14),   
      "8" = c(23, 31, 32, 33)
    )
  )

2. 部分分组在原始数据中没有对应患者

如果你的原始数据里,某个地区对应的城市没有任何患者(比如地区2的城市10、24没有数据),那这个分组在结果里会因为没有观测值而不显示。

解决方法:

强制保留所有8个分组水平,即使没有数据:

df1 <- df %>%
  mutate(
    cities = fct_collapse(
      as.character(cities),
      "1" = c("1", "2", "3", "4","5","8"),  
      "2" = c("10", "24"),
      "3" = c("6", "7", "15", "16"),   
      "4" = c("20", "21", "22", "28", "29"),   
      "5" = c("9", "17", "18", "19"),   
      "6" = c("25", "26", "27", "30", "34"),   
      "7" = c("11", "12", "13", "14"),   
      "8" = c("23", "31", "32", "33")
    ) %>% fct_expand("1","2","3","4","5","6","7","8")
  )

快速验证方法

先运行class(df$cities)查看原始列的类型,再用table(df$cities)确认每个城市的出现次数,就能快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:38:15