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

R语言:Text_General_Code变量归为大类失败,Category列现NA问题求助

解决R中分类变量归组出现NA及多余变量的问题

嘿,我看你在给Text_General_Code归组到Category时遇到了NA值的问题,而且报告里还多出了不少不需要的变量,这就帮你梳理下问题和解决办法:

问题根源分析

  1. 未初始化Category变量:你直接给匹配到的行赋值Category,但没匹配到的行就会默认是NA,不会自动归到"Others"。
  2. 条件里的错误:你写的pdx$Type == "KIDNAPPING"用错了变量(应该是Text_General_Code),还有NON - CRIMINAL的空格可能和原始数据里的格式不一致,另外说不定还有一些Text_General_Code的类别没被你写到条件里。
  3. 未清理多余变量:你注释掉了select命令,导致原始数据里的很多变量都被保留下来,所以报告里变量数量超标。

分步解决方案

1. 用更高效的方式创建Category(避免NA)

推荐用dplyr的case_when,代码更整洁,还能自动兜底所有未匹配的类别为"Others",不会出现NA:

library(dplyr)

pdx <- pdx %>%
  mutate(Category = case_when(
    # 归组Theft类
    Text_General_Code %in% c("THEFT", "MOTOR VEHICLE THEFT") ~ "Theft",
    # 归组Battery类
    Text_General_Code == "BATTERY" ~ "Battery",
    # 归组Criminal damage类
    Text_General_Code == "CRIMINAL DAMAGE" ~ "Criminal damage",
    # 归组Narcotics类
    Text_General_Code %in% c("NARCOTICS", "OTHER NARCOTIC VIOLATION") ~ "Narcotics",
    # 归组Assault类
    Text_General_Code == "ASSAULT" ~ "Assault",
    # 归组Burglary类
    Text_General_Code == "BURGLARY" ~ "Burglary",
    # 归组Robbery类
    Text_General_Code == "ROBBERY" ~ "Robbery",
    # 所有未匹配的都归为Others
    TRUE ~ "Others"
  ))

2. 检查是否有遗漏的类别

如果还是担心有没覆盖到的Text_General_Code,可以先查看所有唯一值,确认你的条件都覆盖到了:

# 查看Text_General_Code的所有唯一值
unique(pdx$Text_General_Code)

3. 清理多余变量

把你不需要的变量删掉,只保留分析需要的,比如:

pdx <- pdx %>%
  # 这里保留你需要的变量,比如District、Category、Year、Count等,根据需求调整
  select(District, Text_General_Code, Category, Year, Count, Dispatch_Date)

4. 验证结果

运行完后可以检查Category的分类情况,确认没有NA且只有你想要的8个类别:

# 查看各类别的数量分布
table(pdx$Category)
# 检查是否有NA值
sum(is.na(pdx$Category))

针对大数据集的小提示

你的数据集有230万条记录,用dplyr的函数会比基础R的循环/逐个赋值更高效,能节省不少运行时间哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:23:11