繁体   English   中英

如何获得连续变量和分类变量的描述性表?

[英]How to get descriptive table for both continuous and categorical variables?

我想以html格式获取数据框中所有变量的描述性表。 我需要连续变量的均值和标准差。 对于类别变量,每个类别的频率(绝对计数)和每个类别的百分比。 另外,我还需要包含缺失值的计数。

让我们使用以下数据:

data("ToothGrowth")
df<-ToothGrowth
df$len[2]<-NA
df$supp[5]<-NA

我想以html格式获取表,如下所示:

----------------------------------------------------------------------
Variables       N (missing)     Mean (SD)  / %
----------------------------------------------------------------------
len               59 (1)             18.9 (7.65)
supp
   OJ            30                   50%
   VC            29                   48.33%
   NA            1                    1.67%
dose            60                   1.17 (0.629)

我还需要设置小数点后的位数以显示。

如果您知道更好的变体,而不是用更好的方式以html方式显示该信息,请提供您的解决方案。

这是一种为数字和因子列创建单独的汇总表的编程方式。 请注意,这不会按照您的要求记录表中的NA,但会像您一样忽略NA以计算摘要统计信息。 无论如何,这是一个起点。 在这里,您可以组合表格并根据需要格式化标题。

如果将此代码编织到带有HTML输出的RMarkdown文档中, kable将自动生成html表,而css将使用水平规则很好地格式化该表,如下图所示。 请注意, booktabs还有一个booktabs选项,可以使表格更漂亮,例如LaTeX booktabs包。 否则,请参阅knitr :: kable的文档以获取选项。

library(dplyr)
library(tidyr)
library(knitr)

data("ToothGrowth")
df<-ToothGrowth
df$len[2]<-NA
df$supp[5]<-NA

numeric_cols <- dplyr::select_if(df, is.numeric) %>%
  gather(key = "variable", value = "value") %>%
  group_by(variable) %>%
  summarize(count = n(),
            mean = mean(value, na.rm = TRUE),
            sd = sd(value, na.rm = TRUE))

factor_cols <- dplyr::select_if(df, is.factor) %>%
  gather(key = "variable", value = "value") %>%
  group_by(variable, value) %>%
  summarize(count = n()) %>%
  mutate(p = count / sum(count, na.rm = TRUE))

knitr::kable(numeric_cols)

在此处输入图片说明

knitr::kable(factor_cols)

在此处输入图片说明

我发现r包table1我的要求。 这是一个代码:

library(table1)
data("ToothGrowth")
df<-ToothGrowth
df$len[2]<-NA
df$supp[5]<-NA
table1(reformulate(colnames(df)), data=df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM