对 R table 函数进行故障排除以创建外观更完整的 table
Troubleshooting R table function to create a more complete-looking table
我正在尝试为总共 3 个问题的调查问卷(答案分级为 1-5)创建一个相对百分比值的 table。
我正在使用 formattable
库将 table 中的值转换为百分比,但到目前为止我无法将问题 1、2 和 3 的结果组合成1 table。
我写的代码是:
tableq1<-percent(table(Q1val)/length(na.omit(Q1val)))
tableq1
当前输出为:
我需要做什么才能实现这一目标?
最终,我希望将此 table 设为 pdf 或 png,并使用网格线使其看起来干净专业。
每个请求:
dput(Q1val)
c(4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 4, 4, 3, 4, 5,
4, 5, 1, 5, 5, 5, 4, 5, 4, 3, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5,
5, 5, 3, 5, 5, 4, 4, 4, 4, 5, 2, 5, 4, NA, 5, 5, 5, 3, 5, 5,
4, 5, 5, 4, 5, 5, 4, 4, 5, 4, 5, 5, 4, 5, 5, 5, 5, 5, 4, 5, 4,
4, 3, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 4, 4, 3, 5, 5, 5, 5, 4, 3,
4, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 5, 4, 4, 4, 5, 4, 4, 5, 5, 5,
5, 5, 4, 4, 5, 4, 5, 5, 5, 2, 4, 2, 5, 5, 3, 4, 3, 4, 5, 5, 4,
4, 3, 5, 5, 4, 5, 4, 3, 5, 3, 4, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5,
5, 5, 4, 5, 5, 3, 3, 4, 5, 4, 5, 5 # , ...
)
为了改进我的评论,我选择使用 kableExtra
包呈现结果。
解决方案
首先加载合适的包:
library(dplyr)
library(formattable)
library(kableExtra)
在您的工作区中生成 Q*val
向量后...
# ...
# Code to generate 'Q1val', 'Q2val', ...
# ...
...然后 运行 此工作流将它们合并为一个应急事件 table:
# Identify all the 'Q*val' vectors.
q_names <- ls(pattern = "Q\d+val")
# Assemble a single table.
q_all <- q_names %>%
# Capture those vectors in a (named) list.
mget(inherits = TRUE) %>%
# Turn each vector into a contingency table of percentages.
sapply(
FUN = function(x) {
percent(table(x) / length(na.omit(x)))
},
simplify = FALSE
) %>%
# Stack those contingency tables into a single table.
do.call(what = bind_rows) %>%
# Convert to 'data.frame' to preserve row names.
as.data.frame() %>%
# Add row names of "Q1", "Q2", ...; as extracted from the names "Q1val", "Q2val", ...
`rownames<-`(value = gsub(
x = q_names,
pattern = "^(Q\d+)(val)$",
replacement = "\1"
))
然后您可以美化 table 并将其导出为图像。
# Prettify the table.
q_pretty <- q_all %>%
# Convert into 'kable' object.
kbl() %>%
# Border the rows and stripe the cells.
kable_styling(
bootstrap_options = c("bordered", "striped")
# ...
# Further styling as desired.
# ...
) # %>%
# ...
# Further 'kable' adjustments as desired.
# ...
# Save pretty table as PNG image.
save_kable(
x = q_pretty,
file = "pretty.png"
)
备注
您可以通过将 "pretty.png"
替换为 "pretty.pdf"
来轻松保存为 PDF。
结果
我不得不即兴创作自己的 Q2val
和 Q3val
,但结果 pretty.png
应该如下所示:
我正在尝试为总共 3 个问题的调查问卷(答案分级为 1-5)创建一个相对百分比值的 table。
我正在使用 formattable
库将 table 中的值转换为百分比,但到目前为止我无法将问题 1、2 和 3 的结果组合成1 table。
我写的代码是:
tableq1<-percent(table(Q1val)/length(na.omit(Q1val)))
tableq1
当前输出为:
我需要做什么才能实现这一目标? 最终,我希望将此 table 设为 pdf 或 png,并使用网格线使其看起来干净专业。
每个请求:
dput(Q1val)
c(4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 4, 4, 3, 4, 5,
4, 5, 1, 5, 5, 5, 4, 5, 4, 3, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5,
5, 5, 3, 5, 5, 4, 4, 4, 4, 5, 2, 5, 4, NA, 5, 5, 5, 3, 5, 5,
4, 5, 5, 4, 5, 5, 4, 4, 5, 4, 5, 5, 4, 5, 5, 5, 5, 5, 4, 5, 4,
4, 3, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 4, 4, 3, 5, 5, 5, 5, 4, 3,
4, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 5, 4, 4, 4, 5, 4, 4, 5, 5, 5,
5, 5, 4, 4, 5, 4, 5, 5, 5, 2, 4, 2, 5, 5, 3, 4, 3, 4, 5, 5, 4,
4, 3, 5, 5, 4, 5, 4, 3, 5, 3, 4, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5,
5, 5, 4, 5, 5, 3, 3, 4, 5, 4, 5, 5 # , ...
)
为了改进我的评论,我选择使用 kableExtra
包呈现结果。
解决方案
首先加载合适的包:
library(dplyr)
library(formattable)
library(kableExtra)
在您的工作区中生成 Q*val
向量后...
# ...
# Code to generate 'Q1val', 'Q2val', ...
# ...
...然后 运行 此工作流将它们合并为一个应急事件 table:
# Identify all the 'Q*val' vectors.
q_names <- ls(pattern = "Q\d+val")
# Assemble a single table.
q_all <- q_names %>%
# Capture those vectors in a (named) list.
mget(inherits = TRUE) %>%
# Turn each vector into a contingency table of percentages.
sapply(
FUN = function(x) {
percent(table(x) / length(na.omit(x)))
},
simplify = FALSE
) %>%
# Stack those contingency tables into a single table.
do.call(what = bind_rows) %>%
# Convert to 'data.frame' to preserve row names.
as.data.frame() %>%
# Add row names of "Q1", "Q2", ...; as extracted from the names "Q1val", "Q2val", ...
`rownames<-`(value = gsub(
x = q_names,
pattern = "^(Q\d+)(val)$",
replacement = "\1"
))
然后您可以美化 table 并将其导出为图像。
# Prettify the table.
q_pretty <- q_all %>%
# Convert into 'kable' object.
kbl() %>%
# Border the rows and stripe the cells.
kable_styling(
bootstrap_options = c("bordered", "striped")
# ...
# Further styling as desired.
# ...
) # %>%
# ...
# Further 'kable' adjustments as desired.
# ...
# Save pretty table as PNG image.
save_kable(
x = q_pretty,
file = "pretty.png"
)
备注
您可以通过将 "pretty.png"
替换为 "pretty.pdf"
来轻松保存为 PDF。
结果
我不得不即兴创作自己的 Q2val
和 Q3val
,但结果 pretty.png
应该如下所示: