1

我正在使用 Amelia 为每个缺少数据的变量生成五个新的假设数据集。现在,我想在插补后创建新变量。

可重现的数据集位于 Zelig 包中。

require(Zelig)
require(Amelia)
data(freetrade)
       year    country   tariff   polity  pop        gdp.pc    ...
    1  1981    SriLanka  NA       6       14988000   461.0236 
    2  1982    SriLanka  NA       5       15189000   473.7634 
    3  1983    SriLanka  41.3     5       15417000   489.2266 

使用Amelia II创建 5 个估算数据集

a.out <- amelia(freetrade, m=5, ts="year", cs="year")

转换插补变量

我学会了如何创建插补变量的转换以供进一步分析使用,参见 4.8。在手册中。例如:

a.out<-transform(a.out, pol_gdp = polity * gdp-pc)  
a.out<-transform(a.out, pol.gdp = polity / gdp)  
head(a.out$imputations[[1]])

  year  country  tariff   polity pop      gdp.pc  ... pol_gdp  pol.gdp 
1 1981  SriLanka 39.55176 6      14988000 461.0236    2766.142 0.013014518  
2 1982  SriLanka 55.70500 5      15189000 473.7634    2368.817 0.010553791 
3 1983  SriLanka 41.30000 5      15417000 489.2266    2446.133 0.010220214
     ...

问题

我不知道如何根据另一个变量中的值创建一个新变量。也就是说,通常我会使用 if-else 参数,但它在 Amelia 中不起作用。

a.out$imputations$new.var<-ifelse(a.out$imputations$polity==5,1,0)

任何想法将不胜感激!

非常感谢。

4

1 回答 1

0

非常感谢所有开始思考如何回答这个问题的人。

我想我自己找到了解决方案:

a.out <- transform(a.out, new.var=ifelse(polity==5,1,0))
于 2012-12-14T16:15:16.007 回答