基于'construction'合并行:NYC 311数据dplyr处理求助
NYC 311施工噪音投诉邮编占比计算方案
实现步骤
先给所有descriptor含"construction"的记录打标记,再按邮编分组统计占比,完整代码如下:
library(dplyr) comp_types <- df %>% # 保留需要的字段 select(complaint_type, descriptor, incident_zip) %>% # 标记施工相关投诉:不管大小写,只要descriptor里有construction就算 mutate(is_construction = grepl("construction", descriptor, ignore.case = TRUE)) %>% # 按邮政编码分组 group_by(incident_zip) %>% # 统计总投诉数、施工投诉数,计算占比 summarize( total_complaints = n(), construction_complaints = sum(is_construction, na.rm = TRUE), construction_ratio = construction_complaints / total_complaints ) %>% # 过滤掉空的邮编记录 filter(!is.na(incident_zip))
关键代码解释
grepl(...):模糊匹配descriptor里的"construction",忽略大小写避免漏判(比如"Construction""CONSTRUCTION"都能被识别)sum(is_construction, na.rm = TRUE):统计每组里施工投诉的数量,自动跳过缺失值construction_ratio:直接算出占比,要是需要百分比格式,改成construction_ratio = (construction_complaints / total_complaints)*100就行
可选优化
如果只关注噪音类投诉(比如complaint_type是"Noise"相关),可以在select之后加一行筛选:
filter(grepl("Noise", complaint_type, ignore.case = TRUE))
内容的提问来源于stack exchange,提问作者Ellie
相关产品推荐
相关产品推荐

