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

时间:2019-09-05 17:53:20

标签: html r html-table

我想以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显示该信息的更好的变体。

2 个答案:

答案 0 :(得分:1)

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

如果将此代码编织到带有HTML输出的RMarkdown文档中,kable将自动生成html表,而css将使用水平规则很好地格式化该表,如下图所示。请注意,kable还有一个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)

enter image description here

knitr::kable(factor_cols)

enter image description here

答案 1 :(得分:0)

我发现r软件包table1可以满足我的要求。这是一个代码:

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