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

如何拆分网页爬取CSV的嵌套字段导入Stata保存为.dta格式

Stata拆分非结构化JSON字段操作方案

你导入的CSV中v22、v23字段是爬虫未做结构化解析的JSON格式字符串,Stata 14及以上版本无需安装第三方包即可完成字段提取,具体操作如下:

提取creator字段(v22)的独立id、name列

先确认v22单元格内容为标准JSON结构(格式类似{"id":123456,"name":"创作者昵称",...其他冗余字段}),根据你的Stata版本选对应代码运行即可:

  • 适配Stata 14及以上所有版本(正则匹配写法,无版本依赖)
* 提取创作者数字id
gen creator_id = ustrregexs(1) if ustrregexm(v22, `"id":([0-9]+)"')
destring creator_id, replace
* 提取创作者名称,自动兼容带转义字符的文本
gen creator_name = ustrregexs(1) if ustrregexm(v22, `"name":"([^"\\]*(\\.[^"\\]*)*)"')
  • 适配Stata 16及以上版本(官方JSON解析函数写法,容错率更高,不会受字段顺序、特殊字符干扰)
gen creator_id = json_extract_string(v22, "$.id")
destring creator_id, replace
gen creator_name = json_extract_string(v22, "$.name")

提取位置字段(v23)的独立name、state、short_name列

提取逻辑和creator字段完全一致:

  • 适配Stata 14及以上所有版本
gen location_name = ustrregexs(1) if ustrregexm(v23, `"name":"([^"\\]*(\\.[^"\\]*)*)"')
gen location_state = ustrregexs(1) if ustrregexm(v23, `"state":"([^"\\]*(\\.[^"\\]*)*)"')
gen location_short_name = ustrregexs(1) if ustrregexm(v23, `"short_name":"([^"\\]*(\\.[^"\\]*)*)"')
  • 适配Stata 16及以上版本
gen location_name = json_extract_string(v23, "$.name")
gen location_state = json_extract_string(v23, "$.state")
gen location_short_name = json_extract_string(v23, "$.short_name")

操作注意事项

  • 运行提取代码前先备份原始数据集,避免误操作覆盖原始字段
  • 若提取后部分行结果为空,先抽查对应行的原始字段内容,大概率是原始数据本身存在字段缺失(比如部分众筹项目未填写位置所属州信息),不属于代码报错
  • 若字段内包含大量转义引号、特殊符号,优先使用高版本的官方JSON解析函数,正则写法在极端特殊字符场景下可能出现匹配偏差
  • 所有字段提取校验完成后,直接运行save 自定义数据集名称.dta, replace即可导出为标准.dta格式文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:18:43