如何将末尾带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和Brasilyear会分别得到2008和2012
如果后续需要把year转换成数值型变量,可以再加一句:
destring year, replace
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

