我目前有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
選項,從而將標籤轉換成字符串: