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

如何将末尾带4位年份的复合字符串变量拆分为国家与年份变量?

拆分字符串变量为国家名称和年份

首先,你提到的gen(substr("country",-4,.))思路方向是对的,但有个小语法问题:变量名不需要加双引号,引号是用来表示字符串常量的,直接用变量名即可。下面是具体的实现步骤:

提取年份部分

因为年份固定是末尾4位数字,直接用substr()函数从右侧截取4位就可以,代码如下:

gen year = substr(country, -4, .)

这里的-4表示从字符串倒数第4位开始截取,.表示截取到字符串末尾,刚好得到4位的年份。

提取国家名称部分

由于国家名称的长度不固定,但总长度减去4就是国家名称的长度,我们可以用length()函数获取字符串总长度,再计算出国家名称的截取范围:

gen country_name = substr(country, 1, length(country) - 4)

解释一下:

  • length(country)返回每个字符串的总字符数
  • 减去4后就是国家名称的字符长度
  • 从第1位开始截取对应长度,就得到了纯国家名称

示例验证

假设你的country变量有两个观测值:Afghanistan2008和Brasil2012,运行上述代码后:

  • country_name会分别得到Afghanistan和Brasil
  • year会分别得到2008和2012

如果后续需要把year转换成数值型变量,可以再加一句:

destring year, replace

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:55:41