将lmer输出转换为word / excel

时间:2012-12-31 02:08:18

标签: r lme4

我在R工作,有一个名为lme4的包。

执行模型:

lmer.rasch <- lmer(Response ~ item -1 + (1|STIDSTD),family=binomial, data=exampledata)

让我在控制台输出,如帖子末尾所示。我想复制这个,似乎是一个表,excel,或最终说,识别单独的列和行。 Ctrl-C / Ctrl-V到excel会识别行,但不识别列。

使用write.csv(lmer.rasch)会出错:

  

as.data.frame.default(x [[i]],可选= TRUE)出错:不能   将类'结构(“mer”,package =“lme4”)'强制转换为data.frame

这是包中的问题,还是我错误地使用write函数的一般问题,或者R实际上没有将此输出分成列?

    Fixed effects:
                        Estimate Std. Error z value Pr(>|z|)    
    variableamoeba       -2.7529     0.3000  -9.175  < 2e-16 ***
    variablebacterium    -2.3937     0.2244 -10.668  < 2e-16 ***
    variableleech         0.5578     0.1693   3.294 0.000987 ***
    variablecentipede     1.7012     0.1909   8.911  < 2e-16 ***
    variablelizard       -4.1836     0.4090 -10.229  < 2e-16 ***
    variabletapeworm     -1.3697     0.1841  -7.439 1.01e-13 ***
    variablehead lice     1.1803     0.1777   6.643 3.07e-11 ***
    variablemaggot        0.8819     0.1740   5.068 4.03e-07 ***
    variableant           2.5971     0.2332  11.137  < 2e-16 ***
    variablemoth          2.5389     0.2305  11.016  < 2e-16 ***
    variablemosquito      4.1270     0.3984  10.359  < 2e-16 ***
    variableearthworm    -0.3113     0.1675  -1.858 0.063106 .  
    variablecaterpillar   0.7278     0.1706   4.265 2.00e-05 ***
    variablescorpion     -3.1011     0.2748 -11.286  < 2e-16 ***
    variablesnail        -1.4499     0.1861  -7.791 6.66e-15 ***
    variablespider        0.4913     0.1681   2.923 0.003469 ** 
    variablegrasshopper   1.9167     0.1986   9.650  < 2e-16 ***
    variabledust mite     0.5767     0.1701   3.391 0.000696 ***
    variabletarantula    -0.7640     0.1734  -4.406 1.05e-05 ***
    variabletermite       1.8333     0.2007   9.136  < 2e-16 ***
    variablebat          -5.2427     0.6486  -8.083 6.33e-16 ***
    variablewasp          3.0696     0.2687  11.423  < 2e-16 ***
    variablesilkworm      1.1310     0.1792   6.313 2.74e-10 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

3 个答案:

答案 0 :(得分:9)

这是一种方式:

 x <- rnorm(100)
 y <- 1:100
 g <- c(rep("a",50),rep("b",50))

library(lme4)
mod1 <- glmer(y ~ x  + (1|g) )
summary(mod1)

library(memisc)
getSummary.mer(mod1)$coef
write.csv(getSummary.mer(mod1)$coef,"answer.csv")

这应该是我认为你想要的,但你的模型属于mer类而不是matrixdata.frame

 class(mod1)
[1] "mer"
attr(,"package")
[1] "lme4"

class(getSummary.mer(mod1)$coef)
[1] "matrix"

这就是为什么你不能只是根据需要写一个文件。


修改


现在也是:

summary(mod1)$coefficients  
write.csv( summary(mod1)$coefficients )

答案 1 :(得分:1)

我按照三个简单的步骤从R-studio控制台复制并粘贴到excel并维护/恢复列结构:

  1. 从R-Studio控制台复制文本。

  2. 将分隔字符串的内容粘贴到单个单元格中。

  3. 单击我粘贴数据的(单个)单元格,然后从数据选项卡(或Alt + D + E)中选择“text to columns”选项。这将启动文本导入向导,我发现它可以很好地根据文本宽度计算R-Studio粘贴中的列(点击“下一步”很多)。

答案 2 :(得分:0)

这适用于我(使用lme4):

    coeffs <- coef(summary(your.model)) # get estimates, etc...
    p <- pnorm(abs(coeffs[, "t value"]), lower.tail = FALSE) * 2 # add the much disputed p-values

    coeffsp <- cbind(coeffs, "p value" = round(p,3)) # combine it into one object
    write.csv(coeffsp, "coeffsp.csv") # export