2014-01-22 2 views
0

Код, который у меня есть, получен только из формулы в консоли. Внутри этого кода есть и есть петли.Создайте матрицу из печати в консоли R

Как создать матрицу для сопоставления этих данных?

+0

Итак, у вас есть текстовое представление данных? Если да, то на что это похоже? Если нет, что конкретно у вас есть? –

+0

Добро пожаловать в SO. Взгляните на [R введение] (http://cran.r-project.org/doc/manuals/R-intro.pdf) для этого, если у вас все еще есть сомнения, попытайтесь привести пример и задать вопрос с код в нем. – marbel

ответ

0

Вот пример, который запускает две регрессии, извлекает результаты и сохраняет результаты в кадре данных с именем outcomes.

library(plyr) 
library(arm) 
# create some data 
    dat <- data.frame(group=c(rep(1, 30), rep(0, 30)), 
        dv1=runif(60, 1, 30), 
        dv2=runif(60, 1, 30), 
        iv1=sample(c(0:1), 60, replace=TRUE), 
        iv2=runif(60, 1, 30)) 
# dvs to test 
    dv <- c("dv1", "dv2") 
# create object to receive results 
    outcomes <- NULL 
    outcomes <- as.data.frame(outcomes) 
# for loop 
    for (i in 1:length(dv)) { 
    # run a regression and store the results 
     temp <- lm(get(dv[i]) ~ group + factor(iv1) + iv2, data=dat) 
     temp2 <- summary(temp) 
    # extract results and fill table 
     outcomes[i,1] <- dv[i]     # name of outcome variable 
     outcomes[i,2] <- display(temp)$n   # total observations 
     treat.n <- count(dat$group, 1)[2,2]  # obs in treatment group 
     control.n <- count(dat$group, 1)[1,2] 
     treat.m <- aggregate(dat[dv[i]],   # treatment mean 
          by=list(dat$group), 
          FUN=mean, 
          na.rm=TRUE)[2,2] 
     outcomes[i,3] <- treat.m 
     treat.sd <- aggregate(dat[dv[i]],   # treatment sd 
          by=list(dat$group), 
          FUN=sd, 
          na.rm=TRUE)[2,2] 
     outcomes[i,4] <- treat.sd 
     control.m <- aggregate(dat[dv[i]],  # control mean  
          by=list(dat$group), 
          FUN=mean, 
          na.rm=TRUE)[1,2] 
     outcomes[i,5] <- control.m     
     control.sd <- aggregate(dat[dv[i]],  # control sd 
           by=list(dat$group), 
           FUN=sd, 
           na.rm=TRUE)[1,2] 
     outcomes[i,6] <- control.sd 
     coeffs <- coefficients(temp)    # coefficients 
     outcomes[i,7] <- coeffs[2]    # ATE 
     outcomes[i,8] <- se.coef(temp)[2]   # std err 
     outcomes[i,9] <- coef(temp2)[,4][2]  # p-value 
    # add column names 
     names(outcomes) <- c("variable", "obs", "treat.mean", "treat.sd", 
          "control.mean", "control.sd", "ate", "ate.se", 
          "pvalue") 
    } 
+0

Связано ли это с вопросом? –

+0

OP сказал, что у него/она есть формула и для циклов, которые печатают результаты на консоль, и он/она хочет захватить результаты в матрице. Я создал набор данных игрушек и провел регрессии в цикле и извлек результаты в кадр данных. Общая идея может быть применена к фактической проблеме OP. –

Смежные вопросы