2016-07-21 6 views
0

私はこのようになり、データ・セットがあります。Stataでデータを変換せずにExcelにデータをかなり長い形式で書き込むにはどうすればよいですか?

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

今、私はこのようになりますExcelファイルにこのデータを書き込みたい:

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

それは、そのExcelファイルを書くようなものだがこれらの変数の値をループしてExcelの行に配置します。私が考えることのできる1つの潜在的な方法は、余分なテキスト変数と長いフォーマットへのデータreshapeを作成することです。しかし、この結果を達成するためのより効率的な方法があり、そうする必要はありませんか?私はいくつかの検索を行いましたが、putexcelのように見えますが、わかりません。

EDIT:SPSSでは、そのようなこの構文として、非常に単純かつ直接的に行うことができます。

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

だから私はStataの中でそうする同様の方法があるかもしれないと思います。

答えて

2

個々の観測のループは、変数をループするよりもはるかに遅くなります。

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

私は最初の方法を試してみました。ここで

は、あなたの目標を達成するための二つの潜在的な方法です。プログラムは2つの変数_id_と_cv_を持つデータセットを作成し、エクスポートされたExcelはこれらの変数を_horizo​​ntal_ orderで整理します。しかし、元の投稿に記載されているように、それらを_vertical_順序で整理する必要があります。作り直すことは仕事をしますが、もっと効率的な方法があるのだろうかと思います。つまり、データを再構成しないようにします(再構成プログラムは、多数の変数でかなり重要になります)。 – NonSleeper

+0

@NonSleeper私は何かをもっと明確にすべきでした。 'export'の前に' export'部分を置くか、単に 'preserve'と' restore'行を完全に取り除いてください。最初の提案で投稿を編集しました。 –

関連する問題