如何从ACS数据中移除ZCTA并提取5位邮政编码?
提取ACS数据中的5位邮政编码方法
针对ACS数据里邮政编码带“ZCTA”前缀的问题,不用循环,直接用向量化的字符串处理函数就能高效解决,完全适配大数据集:
方法1:直接提取最后5位字符
不管前缀内容是什么,直接取字符串最后5位(邮编固定为5位数字),两种实现方式:
- 基础R原生函数:
# 假设数据框为df,邮编列名为zip_col df$clean_zip <- substr(df$zip_col, nchar(df$zip_col)-4, nchar(df$zip_col)) - tidyverse工具包(stringr):
library(stringr) df$clean_zip <- str_sub(df$zip_col, start = -5)
方法2:正则移除固定前缀
如果前缀确定是“ZCTA”,可以直接精准替换掉前缀:
- 基础R的
gsub函数:df$clean_zip <- gsub("^ZCTA", "", df$zip_col) - tidyverse的
str_remove函数:library(stringr) df$clean_zip <- str_remove(df$zip_col, "^ZCTA")
为什么不用循环?
R的向量化操作比循环效率高几个量级,大数据集下能节省大量计算时间,以上方法都是直接对整列数据批量处理,完全不用逐行循环。
内容的提问来源于stack exchange,提问作者kelsz24
相关产品推荐
相关产品推荐

