如何为城市分配地区?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
相关产品推荐
相关产品推荐

