我的数据是长格式的,带有个人标识符和年份标识符。 它是来自不同数据集的合并和附加数据文件。
编辑:
我的目标是重塑它以对来自一年的所有观察结果进行回归,并使用前几年的变量。
我的目标不是能够使用任何mi
命令。
这是我的重塑代码:
use "${DATA_PATH}HViD_SOEP_rev_dum.dta"
* save all variable-names
quietly describe, varlist
local all_vars = r(varlist)
display "`all_vars'"
** reshape **
foreach var in `all_vars'{
display "`var'"
* no reshape for pid, hid, syear and ypnat
if `var' == "pid" | `var' == "hid" | `var' == "syear" | `var' == "ypnat*" {
* do nothing
}
else{
* reshape
reshape wide `var', i(pid) j(syear)
}
}
我得到了回报
无;数据是mi设定的 使用mi reshape对这些数据执行重塑。 mi reshape与reshape具有相同的语法。 也许你没有输入重塑。在这种情况下,您键入的命令将重新整形,并且不适合与mi数据一起使用。使用mi extract或mi xeq选择要运行命令的数据,可能是m = 0
在stata-manual中读到:
mi unset是一个很少使用的命令来取消设置数据。更好的替代品包括mi提取物和 mi export(分别参见[MI] mi extract和[MI] mi export)。
我尝试mi extract = 0
,建议here。
但回报是
语法错误 找到m = 0#expected
我也试过mi reshape wide
var',i(pid)j(syear)`。其中解决了
mi reshape wide pgtatzt,i(pid)j(syear) (推算变量brutto1 brutto2 hinc imo geld betr netw erbey未注册,因为不在m = 0) _mi_miss未找到
所以,现在我的选择非常好。我不知道在哪里可以找到mi_miss变量,因为它不在原始数据中。
我不想将我的数据导出到csv文件,因为这会导致我的标签丢失。
非常感谢任何帮助。
答案 0 :(得分:1)
这是尝试基于"简单示例"复制已发布的解决方案。在Stata MI手册的第18-20页。为此,我删除了变量_mi_miss,这是mi reshape
命令失败的原因。 可以看出,应用代码的结果不是接受。 修改我添加了一个命令,该命令可能只会在插补之前恢复原始数据集。这假设变量计数器变量mi
命令的适当大小的数据集。请根据此示例发布解决方案的工作版本。 _mi_m
仍在数据集中。
use http://www.stata-press.com/data/r14/mheart5, clear
mi set mlong
mi register imputed age bmi
set seed 29390
mi impute mvn age bmi = attack smokes hsgrad female, add(10)
/* Replicate Post Problem */
drop _mi_miss
save green_yellow, replace
sum attack smokes _mi*
export delimited unset.csv, nolabel quote replace
clear
import delimited unset.csv, clear
cf _all using green_yellow
keep if _mim_m==0 // ADDED
save unset, replace
答案 1 :(得分:0)
感谢大家的时间,并认为你已经解决了这个问题。 我会回答我的问题,因为我发现至少有一种解决方法。我知道我的问题非常具体。无论如何,imho,this is the best way to solve the question。
最初的想法来自statalist。
我将mi设置数据导出到.csv并确保标记的变量不是作为整数导出而是作为值导出。 然后我重新导入数据到stata。生成的文件不再设置为mi。 通过将此数据附加到我的其余数据,我重新获得了目标文件,但这次不是mi设置。 我确保重新导入的文件不是主文件,而是附加时使用的文件。 因此,主文件中的标签将扩展到最终文件。 这是我的导出和重新导入代码:
* load data *
use "${DATA_PATH}HViD_green_yellow.dta"
*** export data to .csv ***
/*
NOTE: instead of labels the numeric values are saved! This is important to
ensure that the reimported dataset will be compatabile with SOEP-data.
All strings are in double quotes: ""
*/
export delimited using "${DATA_PATH}HViD_miunset.csv", nolabel quote replace
clear
*** import data ***
import delimited "${DATA_PATH}HViD_miunset.csv"
*** check data for integrity **
cf _all using "${DATA_PATH}HViD_green_yellow.dta"
*** save data ***
save "${DATA_PATH}HViD_miunset.dta"