如何创建引用Stata中其他字符串变量的字符串变量?

如何创建引用Stata中其他字符串变量的字符串变量?,stata,Stata,我目前有两个变量,state和year,我希望将其转换为一个变量,stateyear 我希望stateyear变量具有以下形式的值:state\u year(例如Texas\u 1962) 如何引用状态和年份变量中的值来创建新的状态年份变量?以下是一个示例: // create some example data clear input /// str13 state int year "Noord-Holland" 1962 "Zuid-Holland" 1963 "Utrec

我目前有两个变量,
state
year
,我希望将其转换为一个变量,
stateyear

我希望
stateyear
变量具有以下形式的值:
state\u year
(例如
Texas\u 1962

如何引用
状态
年份
变量中的值来创建新的
状态年份
变量?

以下是一个示例:

// create some example data
clear
input ///
str13 state      int year
"Noord-Holland"  1962
"Zuid-Holland"   1963
"Utrecht"        1964
"Zeeland"        1965
"Noord-Brabant"  1966
"Limburg"        1967
"Gelderland"     1968
"Flevoland"      1969
"Overijsel"      1970
"Drente"         1971
"Friesland"      1972
"Groningen"      1973
end

// create the variable
gen str18 state_year = state + "_" + string(year)

// admire the result
list    
如果
+
运算符出现在两个字符串之间,则表示Stata必须连接两个字符串

因此,部分
state+“\u”
意味着在字符串变量
state
的内容之后添加字符串
“\u”
。为了确保
+
对于
“quo+string(year)
部分也意味着连接,我使用了
string()
函数,它将变量
year
的数值转换为字符串

str18
部分表示希望变量
state\u year
是一个包含18个字符的字符串。在本例中,这适用于荷兰各州,但您需要计算具有最长名称的州中的字符数,然后再加上5,以确定您案例中字符串的最大长度。假设数字是21,那么您需要将str18替换为str21

 gen state_year = state + "_" + string(year) 
 egen state_year = concat(state year), p(_) 
 egen state_year = group(state year), label 
我假设
是数字。也可能是

 gen state_year = state + "_" + string(year) 
 egen state_year = concat(state year), p(_) 
 egen state_year = group(state year), label 
它负责所需的任何类型转换

也可能是

 gen state_year = state + "_" + string(year) 
 egen state_year = concat(state year), p(_) 
 egen state_year = group(state year), label 
这不会给你一个连接下划线。这引出了一个关键点:为什么你认为你需要下划线?它只会在图表上看起来很难看。如果空间是(被认为是)一个问题,那么“北卡罗莱纳大学2013”等等呢


有关此问题的微型回顾,请参见Nick解决方案的一个补充。如果状态变量存储为带有值标签的数字(例如
1“Alabama”2“Alaska”
等),我相信您还需要指定
decode
选项,从而将标签转换为字符串:

 egen state_year = concat(state year), p(_) decode