Stata - 旋转重塑

时间:2014-05-28 21:53:51

标签: formatting stata reshape

我正在重塑文件,并想知道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不起作用,我不得不手动操作。

1 个答案:

答案 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)