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

Jes*_*ess 2 stata

我目前有2个变量,state并且year,我希望将其转换为1个变量,stateyear.

我希望stateyear变量具有以下形式的值:( state_year例如Texas_1962).

如何引用stateyear变量中的值来创建新stateyear变量?

Nic*_*Cox 9

那可能是

 gen state_year = state + "_" + string(year) 
Run Code Online (Sandbox Code Playgroud)

我假设这year是数字.或者可能是

 egen state_year = concat(state year), p(_) 
Run Code Online (Sandbox Code Playgroud)

它负责所需的任何类型转换.

或者可能是

 egen state_year = group(state year), label 
Run Code Online (Sandbox Code Playgroud)

它没有给你一个连接下划线.这提出了一个关键点:为什么你认为你需要那个下划线?它只会在图形或表格上看起来很丑陋.如果空间(被认为是)成问题,那么"North Carolina_2013"​​等等呢?

有关此问题的微缩评论,请参阅http://www.stata-journal.com/sjpdf.html?articlenum=dm0034


Maa*_*uis 6

这是一个例子:

// 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    
Run Code Online (Sandbox Code Playgroud)

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

因此,该部分state + "_"意味着"_"在字符串变量的内容之后添加字符串state.为了确保这+也意味着连接部件"_" + string(year),我使用了string()函数,它将变量的数值year转换为字符串.

str18部分意味着您希望变量state_year是一个包含18个字符的字符串.这个示例中适用于荷兰国家,但您需要计算具有最长名称的状态中的字符数,并将其加5,以确定您的案例中字符串的最大长度.假设该数字为21,那么您需要替换str18str21