Formatting Stata-旋转整形

Formatting Stata-旋转整形,formatting,stata,reshape,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 出于好奇,

我正在重塑一个文件,想知道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

出于好奇,我创建了上面的数据集,但
重塑
不起作用,我不得不手动操作

我们感谢您准确地向我们展示您的输入/输出。诸如此类

…重塑不起作用,我不得不手动操作

不要告诉我们太多

此外,完整的玩具数据集也会有所帮助。我想你的意思是
Race\u Date
在哪里键入
Race Date
(第一行代码)和
Racer\u 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 long R@_Pos R@_Name, i(Race_Num) j(Racer)

正如@Roberto Ferrer所言,这是一个糟糕的问题。您未向我们显示的代码“不起作用”。事实上,根据标准标准,这是离题的:“询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案、为什么不起作用以及预期结果。”(特别是,“比赛日期”不是一个合法的变量名称。)