我正在使用R包stargazer创建高质量的回归表,并且我想使用它来创建摘要统计表。我的数据中有一个因子变量,我希望摘要表向我显示因子的每个类别中的百分比-实际上,将因子分成一组互斥的逻辑(虚拟)变量,然后显示那些在 table 上。这是一个例子:
> library(car)
> library(stargazer)
> data(Blackmore)
> stargazer(Blackmore[, c("age", "exercise", "group")], type = "text")
==========================================
Statistic N Mean St. Dev. Min Max
------------------------------------------
age 945 11.442 2.766 8.000 17.920
exercise 945 2.531 3.495 0.000 29.960
------------------------------------------
但是我试图再增加一行,以显示每组中的百分比(在这些数据中为对照组和/或患者百分比)。我敢肯定,这只是观星者的一个选择,但我找不到它。有谁知道它是什么?
编辑:
car::Blackmoor
已将拼写更新为car::Blackmore
。 最佳答案
由于Stargazer无法直接执行此操作,因此您可以将自己的摘要表创建为数据框,并使用pander,xtable或任何其他包输出。例如,以下是使用dplyr和tidyr创建汇总表的方法:
library(dplyr)
library(tidyr)
fancy.summary <- Blackmoor %>%
select(-subject) %>% # Remove the subject column
group_by(group) %>% # Group by patient and control
summarise_each(funs(mean, sd, min, max, length)) %>% # Calculate summary statistics for each group
mutate(prop = age_length / sum(age_length)) %>% # Calculate proportion
gather(variable, value, -group, -prop) %>% # Convert to long
separate(variable, c("variable", "statistic")) %>% # Split variable column
mutate(statistic = ifelse(statistic == "length", "n", statistic)) %>%
spread(statistic, value) %>% # Make the statistics be actual columns
select(group, variable, n, mean, sd, min, max, prop) # Reorder columns
如果使用pander,将导致以下结果:
library(pander)
pandoc.table(fancy.summary)
------------------------------------------------------
group variable n mean sd min max prop
------- ---------- --- ------ ----- ----- ----- ------
control age 359 11.26 2.698 8 17.92 0.3799
control exercise 359 1.641 1.813 0 11.54 0.3799
patient age 586 11.55 2.802 8 17.92 0.6201
patient exercise 586 3.076 4.113 0 29.96 0.6201
------------------------------------------------------
关于r - 在观星者摘要统计表中将每个因子水平输出为虚拟变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26912957/