2016-07-21 25 views
0

Ich habe einen Datensatz, der wie folgt aussieht:Wie kann ich Daten in einem längeren Format in Excel schreiben, ohne Daten in Stata zu transformieren?

ID Var1 Var2 
1 a1 b1 
2 a2 b2 
3 a3 b3 
etc. 

Jetzt möchte ich diese Daten in eine Excel-Datei schreiben, die wie folgt aussehen:

ID=1 
Var1 = a1 & Var2 = b1 
ID=2 
Var1 = a2 & Var2 = b2 
ID=3 
Var1 = a3 & Var3 = b3 
etc. 

Es ist wie eine Excel-Datei zu schreiben, die "Durchläuft" die Werte dieser Variablen und fügt sie in Excel-Zeilen ein. Eine mögliche Methode, die ich mir vorstellen kann, besteht darin, zusätzliche Textvariablen und reshape Daten in ein langes Format zu schreiben. Aber gibt es einen effizienteren Weg, um dieses Ergebnis zu erreichen, und müssen das nicht tun? Ich habe ein wenig gesucht und es sieht so aus als ob putexcel helfen könnte, aber ich bin mir nicht sicher.

EDIT: In SPSS, kann es ganz einfach und direkt erfolgen, wie diese Syntax:

write outfile='DIRECTORY\output.xls'/"id = " tab id. 
write outfile='DIRECTORY\output.xls'/"Var1 =" tab Var1 tab "&" tab "Var2 =" tab Var2. 

Also ich denke, es eine ähnliche Art und Weise kann so in Stata zu tun.

Antwort

2

Schleifen über einzelne Beobachtungen sind viel langsamer als Schleifen über Variablen.

Hier sind zwei mögliche Wege Ihr Ziel zu erreichen:

clear 
input ID str2 Var1 str2 Var2 
1 "a1" "b1" 
2 "a2" "b2" 
3 "a3" "b3" 
end 

gen id = "ID=" + string(ID) 
drop ID 
gen cv = "" 
foreach var of varlist Var1 Var2 { 
    replace cv = cv + "`var'=" + `var' + " & " 
    drop `var' 
} 
replace cv= regexr(cv," & $","") // remove trailing & 

/* Method 1: Stack & Sort */ 
preserve 
sort id 
stack id cv, into(column) clear 
bys _stack: gen row=_n 
sort row _stack 
keep column 
list, clean noobs 
export excel using "myexcelfile_stack", replace 
restore 

/* Method 2: Reshape */ 
gen n=_n 
rename (id cv) column#, addnumber 
reshape long column, i(n) j(row) 
keep column 
list, clean noobs 

export excel using "myexcelfile_reshape", replace 
+0

Ich habe versucht, die erste Methode. Ihr Programm erstellt einen Datensatz mit zwei Variablen _id_ und _cv_ und das exportierte Excel organisiert diese Variablen in _horizontal_Ordnung. Allerdings muss ich sie in _vertical_ Reihenfolge organisieren, wie in meinem ursprünglichen Beitrag beschrieben. Umformung wird den Job machen, aber ich frage mich, ob es einen effizienteren Weg gibt; das heißt, Daten nicht umzuformen (das Umformprogramm wird bei einer großen Anzahl von Variablen ziemlich umfangreich sein). – NonSleeper

+0

@NonSleeper Ich hätte ein bisschen klarer sein sollen. Setzen Sie den 'export' Teil vor den' restore' oder löschen Sie die 'preserve' und' restore' Zeilen vollständig. Ich habe den Beitrag mit dem ersten Vorschlag bearbeitet. –