我目前有2个变量,state
和year
,我想将其转换为1个变量,stateyear
。如何在Stata中创建引用其他字符串变量的字符串变量?
我希望stateyear
变量具有以下形式的值:state_year
(例如Texas_1962
)。
如何引用state
和year
变量中的值来创建新的stateyear
变量?
我目前有2个变量,state
和year
,我想将其转换为1个变量,stateyear
。如何在Stata中创建引用其他字符串变量的字符串变量?
我希望stateyear
变量具有以下形式的值:state_year
(例如Texas_1962
)。
如何引用state
和year
变量中的值来创建新的stateyear
变量?
更换str18
这可能是
gen state_year = state + "_" + string(year)
在那里我假设year
是数字。或者它可以是
egen state_year = concat(state year), p(_)
它负责所需的任何类型转换。
或者它可能是
egen state_year = group(state year), label
不给你一个连接下划线。这提出了一个关键点:为什么你认为你需要这个下划线?它只会在图表或表格上看起来很丑。如果空间(被认为是一个问题),那么“North Carolina_2013”等等呢?
对于这个问题的一个缩影综述见http://www.stata-journal.com/sjpdf.html?articlenum=dm0034
下面是一个例子:
// 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
如果出现2串之间的+
操作,那么就意味着Stata的具有以连接两个字符串。
因此,部分state + "_"
表示在字符串变量state
的内容之后添加字符串"_"
。为了确保+
也意味着连接部分"_" + string(year)
,我使用了string()
函数,该函数将变量year
的数值变成字符串。
str18
部分表示您希望变量state_year
为包含18个字符的字符串。这个例子适用于荷兰国家,但是您需要计算最长名称状态下的字符数,然后加上5来确定您的情况下字符串的最大长度。说这个数字是21,那么你就需要用str21
一个除了尼克的解决方案。如果状态变量存储为数字与值标签(例如1 "Alabama" 2 "Alaska"
等),我相信你也将需要指定decode
选项,从而将标签转换成字符串: