R语言通过城市匹配双数据集为us_data新增州信息列
你对join的顾虑是多余的,dplyr的left_join()完全可以满足你的需求,该函数会保留左表(也就是你的us_data)的所有行,同一个城市的多条观测都会匹配到对应的州信息,不会出现丢失行的问题。
操作代码
首先加载依赖包:
# 若未安装dplyr先运行 install.packages("dplyr") library(dplyr)
执行匹配替换:
us_data_updated <- us_data %>% # 以city为关联键,左连接us表的州信息 left_join(select(us, city, state_id, state_name), by = "city") %>% # 替换原有的state列,这里用state_id(州缩写),如果需要州全称就替换为state_name mutate(state = coalesce(state_id, state)) %>% # 清理多余的匹配字段,保留原有表的列结构 select(-state_id, -state_name)
代码中的coalesce()函数作用是如果匹配不到州信息(即us表里没有对应城市),就保留原来的US值,避免出现空值。
注意事项
如果存在不同州同名的城市,仅通过城市名称匹配会出现错误,这种情况可以结合邮编前缀等其他字段补充关联规则,优化匹配准确率。
内容的提问来源于stack exchange,提问作者famato
相关产品推荐
相关产品推荐

