R中的Likert比例数据很好但是纯文本表

时间:2018-05-04 09:47:33

标签: r likert

我有缩放比例数据。我希望以简单(对于非R用户)的阅读方式显示它们。重要的是它需要在控制台上纯文本。没有likert包提供的图形或内容。它不一定是table(),但它应该看起来像一张桌子 - 无论它背后是什么神奇的R构造。

此表仅适用于从探索数据集开始的第一个视图。

这是示例数据

> set.seed(0)
> lik <- sample(c(0:3, NA), 150, replace=TRUE)
> lik <- factor(lik, levels=0:3, labels=c('no', 'maybe no', 'maybe yes', 'yes'))
> tn <- table(lik, useNA="always")
> tn
lik
       no  maybe no maybe yes       yes      <NA> 
       22        33        34        37        24 

我“漂亮”的表格看起来像这样

  no maybe no maybe yes  yes <NA>
n 24       34        37   29   26
% 36       51      55.5 43.5   39

请注意3729没有数字显示的事实!

如果我在这里使用rbind(),则有数字。到目前为止,查看我尝试过的内容

> tp <- sapply(tn, function(x) { sum(tn) / 100 * x })
> rbind(tn, tp)
   no maybe no maybe yes  yes <NA>
tn 22     33.0        34 37.0   24
tp 33     49.5        51 55.5   36

问题是,如何设置行名称(例如tn - &lt; n)以及如何防止在数字的第一行打印数字。

我完全愿意就纯文本中的Likert数据如何显示简单明了(意思是:对于非R用户可读,例如SPSS用户而言)提出建议。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,我相信您可以使用kable包中的knitr函数来解决您的问题:

tab <- rbind(tn, tp)
rownames(tab) <- c("n", "%")
knitr::kable(tab, digits=0)

这会产生以下输出

|   | no| maybe no| maybe yes| yes| NA|
|:--|--:|--------:|---------:|---:|--:|
|n  | 22|       33|        34|  37| 24|
|%  | 33|       50|        51|  56| 36|

编辑:抱歉,我现在看到你要在第二行保留小数。不幸的是,kable按列设置数字,所以这对你没有帮助。你可以做的是:

knitr::kable(t(tab))

导致

|          |  n|    %|
|:---------|--:|----:|
|no        | 22| 33.0|
|maybe no  | 33| 49.5|
|maybe yes | 34| 51.0|
|yes       | 37| 55.5|
|NA        | 24| 36.0|

EDIT2:您的百分比似乎不等于100%;我不确定为什么会这样,但以下会给出总计100%的百分比:

tab <- cbind(tn, tn / sum(tn) * 100)
colnames(tab) <- c("n", "%")
knitr::kable(tab, digits = c(0, 1))

|          |  n|    %|
|:---------|--:|----:|
|no        | 22| 14.7|
|maybe no  | 33| 22.0|
|maybe yes | 34| 22.7|
|yes       | 37| 24.7|
|NA        | 24| 16.0|