如何在不转换Stata数据的情况下以相当长的格式将数据写入Excel?

时间:2016-07-21 04:03:03

标签: stata spss

我有一个如下所示的数据集:

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行中。我能想到的一种可能的方法是创建额外的文本变量和reshape数据到长格式。但有没有更有效的方法来实现这一结果,而不是必须这样做?我做了一些搜索,看起来putexcel可能会有所帮助,但我不确定。

编辑:在SPSS中,它可以非常简单直接地完成,例如这种语法:

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

所以我认为在Stata中可能有类似的方法。

1 个答案:

答案 0 :(得分: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