如何将R中介摘要转换为data.frame?

如何将R中介摘要转换为data.frame?,r,R,我使用了中介包中的summary()函数,希望将结果放入data.frame(这样我可以在将其保存到CSV文件之前进行更多操作) 这是摘要(中介)输出的一个示例 我尝试了broom包中的tidy函数和正常的data.frame()函数,但没有成功。更新(忘记下面丑陋的事情) 很难看,但它是有效的: library(mediation) library(sandwich) data("framing") med.fit <- lm(emo ~ treat + age + educ +

我使用了
中介
包中的
summary()
函数,希望将结果放入
data.frame
(这样我可以在将其保存到CSV文件之前进行更多操作)

这是
摘要(中介)
输出的一个示例

我尝试了
broom
包中的
tidy
函数和正常的
data.frame()
函数,但没有成功。

更新(忘记下面丑陋的事情)


很难看,但它是有效的:

library(mediation)
library(sandwich)

data("framing")
med.fit <- lm(emo ~ treat + age + educ + gender + income, data = framing)
out.fit <- glm(cong_mesg ~ emo + treat + age + educ + gender + income,
               data = framing, family = binomial("probit"))


med.out <- mediate(med.fit, out.fit, treat = "treat", mediator = "emo",
                   robustSE = TRUE, sims = 100)

# extract summary

library(purrr)

summary(med.out) %>%
  capture.output() %>%
  discard(`==`, "") -> lines

lines[which(grepl("^ ", lines)):(which(grepl("^Sample", lines))-1)] %>%
  sub("^       ", "med.out", .) %>%
  gsub(" 95%", "_95%", .) %>%
  gsub("CI ", "ci_", .) %>%
  sub(" \\(", "_(", .) %>%
  sub("p-", "p_", .) %>%
  sub(" ", "_", ., fixed=TRUE)  %>%
  textConnection() %>%
  read.table(header=TRUE) %>%
  setNames(sub("_$", "", colnames(.))) %>%
  dplyr::mutate(med.out=sub("\\.|_$", "", med.out),
                med.out=gsub("_", " ", med.out))
##                    med.out Estimate_95. ci_Lower_95. ci_Upper p_value
## 1           ACME (control)       0.0873       0.0382   0.1593    0.00
## 2           ACME (treated)       0.0876       0.0434   0.1586    0.00
## 3            ADE (control)       0.0115      -0.0869   0.1169    0.86
## 4            ADE (treated)       0.0117      -0.0986   0.1238    0.86
## 5             Total Effect       0.0991      -0.0118   0.2160    0.10
## 6  Prop Mediated (control)       0.7862      -4.2247   6.1448    0.10
## 7  Prop Mediated (treated)       0.8044      -3.7360   5.6117    0.10
## 8           ACME (average)       0.0875       0.0409   0.1556    0.00
## 9            ADE (average)       0.0116      -0.0932   0.1204    0.86
## 10 Prop Mediated (average)       0.7953      -3.9803   5.8783    0.10
库(中介)
图书馆(三明治)
数据(“框架”)
中号线
行[其中(grepl(“^”,行)):(其中(grepl(“^Sample”,行))-1)]%>%
子(“^”,“中间输出“,)%>%
gsub(“95%,”_95%,)%>%
gsub(“CI”、“CI_257;”,)%>%
子(“\\(”,“\\”,)%>%
sub(“p-”,“p_-”,)%>%
sub(“,”_“,,fixed=TRUE)%>%
textConnection()%>%
read.table(header=TRUE)%>%
集合名称(sub(“$”,“”,colnames(.))%>%
dplyr::mutate(med.out=sub(“\\\.\u$”,“,med.out),
med.out=gsub(“,”,med.out))
##med.out估算值_95.ci_下限值_95.ci_上限值p_
##1 ACME(控制)0.0873 0.0382 0.1593 0.00
##2 ACME(处理过的)0.0876 0.0434 0.1586 0.00
##3 ADE(控制)0.0115-0.0869 0.1169 0.86
##4 ADE(处理)0.0117-0.0986 0.1238 0.86
##5总效应0.0991-0.01180.2160 0.10
##6 Prop介导(对照)0.7862-4.2247 6.1448 0.10
##7 Prop介导(治疗)0.8044-3.7360 5.6117 0.10
##8顶点(平均值)0.0875 0.0409 0.1556 0.00
##9 ADE(平均值)0.0116-0.0932 0.1204 0.86
##10道普介导(平均)0.7953-3.9803 5.8783 0.10

这很好用!谢谢!有没有办法将“fit_uu”更改为总结内容的名称?(在您的示例中是“med.out”)为该请求更新了它,并使
med.out
列更干净。如果您在
broom
包的github上提交一个问题,请求将其添加到
tidy
generic中,我相当肯定David、Ben、Gavin或其他贡献者之一会将其添加到TODO中,顺便说一句,数据是估算值,95 CI较低,95 CI较高,P值(不是估计值95),但非常感谢您的帮助。我想我理解了修改它的文本替换。在新版本的R中,我现在得到:“扫描错误(file=file,what=what,sep=sep,quote=quote,dec=dec,:第5行没有6个元素”;我不确定这意味着什么,因为google和stackoverflow的答案处理了不同的错误示例。我在新的R版本中使用了“summary(Mediation)$d.avg,summary(Mediation)$d.avg.ci,summary(Mediation)$d.avg.p,summary(Mediation)$z.avg,summary(Mediation)$z.avg.ci,summary(Mediation)$z.avg.p,summary(Mediation)$tau.coef,summary(Mediation)$tau.ci,summary(Mediation)$tau.p,summary(Mediation)$n.avg,summary(Mediation)$n.avg.ci,summary(Mediation)$n.avg.p'但我期待着与它合作
extract_mediation_summary(summary(med.out))
##                             Estimate 95% CI Lower 95% CI Upper p-value
## ACME (control)           0.083271207   0.03938198    0.1334100    0.00
## ACME (treated)           0.083228279   0.03685293    0.1328788    0.00
## ADE (control)            0.009957454  -0.10992815    0.1705339    0.90
## ADE (treated)            0.009914526  -0.12182752    0.1781260    0.90
## Total Effect             0.093185734  -0.03049831    0.2458085    0.16
## Prop. Mediated (control) 0.807209060  -7.10847324    8.8136165    0.16
## Prop. Mediated (treated) 0.820068951  -6.45663184    8.2852297    0.16
## ACME (average)           0.083249743   0.03910592    0.1322914    0.00
## ADE (average)            0.009935990  -0.11587783    0.1743300    0.90
## Prop. Mediated (average) 0.813639005  -6.78255254    8.5494231    0.16
library(mediation)
library(sandwich)

data("framing")
med.fit <- lm(emo ~ treat + age + educ + gender + income, data = framing)
out.fit <- glm(cong_mesg ~ emo + treat + age + educ + gender + income,
               data = framing, family = binomial("probit"))


med.out <- mediate(med.fit, out.fit, treat = "treat", mediator = "emo",
                   robustSE = TRUE, sims = 100)

# extract summary

library(purrr)

summary(med.out) %>%
  capture.output() %>%
  discard(`==`, "") -> lines

lines[which(grepl("^ ", lines)):(which(grepl("^Sample", lines))-1)] %>%
  sub("^       ", "med.out", .) %>%
  gsub(" 95%", "_95%", .) %>%
  gsub("CI ", "ci_", .) %>%
  sub(" \\(", "_(", .) %>%
  sub("p-", "p_", .) %>%
  sub(" ", "_", ., fixed=TRUE)  %>%
  textConnection() %>%
  read.table(header=TRUE) %>%
  setNames(sub("_$", "", colnames(.))) %>%
  dplyr::mutate(med.out=sub("\\.|_$", "", med.out),
                med.out=gsub("_", " ", med.out))
##                    med.out Estimate_95. ci_Lower_95. ci_Upper p_value
## 1           ACME (control)       0.0873       0.0382   0.1593    0.00
## 2           ACME (treated)       0.0876       0.0434   0.1586    0.00
## 3            ADE (control)       0.0115      -0.0869   0.1169    0.86
## 4            ADE (treated)       0.0117      -0.0986   0.1238    0.86
## 5             Total Effect       0.0991      -0.0118   0.2160    0.10
## 6  Prop Mediated (control)       0.7862      -4.2247   6.1448    0.10
## 7  Prop Mediated (treated)       0.8044      -3.7360   5.6117    0.10
## 8           ACME (average)       0.0875       0.0409   0.1556    0.00
## 9            ADE (average)       0.0116      -0.0932   0.1204    0.86
## 10 Prop Mediated (average)       0.7953      -3.9803   5.8783    0.10