我正在重塑文件,并想知道Stata如何处理以下格式的文件。例如,使用来自种族的数据。
Race_Number Race_Date Racer_1_Name Racer_2_Name Racer_3_Name Racer_1_Position Racer_2_Position Racer_3_Position
是否可以将其转换为以下内容。
Race_Number Race_Date Racer_Name Racer Position
出于好奇,我创建了上面的数据集,reshape
不起作用,我不得不手动操作。
答案 0 :(得分:1)
我们感谢您准确地向我们展示您的输入/输出。像
这样的事情...
reshape
无效,我不得不手动操作。
不要告诉我们太多。
此外,完整玩具数据集会有所帮助。我假设您的意思是Race_Date
您键入Race Date
(第一个代码行)和Racer_Position
,其中您键入了Racer Position
(第二个代码行)。
你可以尝试
clear all
set more off
*----- example dataset -----
input ///
Race_Num Race_Dat str5(R1_Name R2_Name R3_Name) R1_Pos R2_Pos R3_Pos
1 5 "Al" "Bob" "Carl" 3 2 1
2 7 "Al" "Bob" "Carl" 3 1 2
3 15 "Al" "Bob" "Carl" 1 2 3
end
format Race_Dat %td
list
*----- what you want -----
forvalues i = 1/3 {
rename R`i'_Name Nam_R`i'
rename R`i'_Pos Pos_R`i'
}
list
reshape long Pos_R Nam_R, i(Race_Num) j(Racer)
order Race_Num Race_Dat
list, sepby(Race_Num)
我所做的只是在reshape
之前更改变量名称。
更好的方法是使用@
,然后不需要重命名变量:
reshape long R@_Pos R@_Name, i(Race_Num) j(Racer)