r - R:是否可以将 knitr::kable 转换为数据帧?
问题描述
我正在使用pivot
lessR 包中的函数来创建一个类似于 Excel 的数据透视表,其中包含两个构成垂直和水平类别的分类变量,以及每个单元格中的平均值。(希望这是有道理的)。
我遵循了文档(https://cran.r-project.org/web/packages/lessR/vignettes/pivot.html)给出的代码。让我们按照他们的例子:
d <- Read("Employee")
a <- pivot(d, mean, Salary, Dept, Gender)
数据d
是这样的:
Years Gender Dept Salary JobSat Plan Pre Post
Ritchie, Darnell 7 M ADMN 53788.26 med 1 82 92
Wu, James NA M SALE 94494.58 low 1 62 74
Hoang, Binh 15 M SALE 111074.86 low 3 96 97
Jones, Alissa 5 F <NA> 53772.58 <NA> 1 65 62
Downs, Deborah 7 F FINC 57139.90 high 2 90 86
Afshari, Anbar 6 F ADMN 69441.93 high 2 100 100
Knox, Michael 18 M MKTG 99062.66 med 3 81 84
Campagna, Justin 8 M SALE 72321.36 low 1 76 84
Kimball, Claire 8 F MKTG 61356.69 high 2 93 92
数据透视a
表是一个很好的表格,正如我希望它在单元格内容等方面的外观一样。它似乎是一个 knitr_kable。
Gender F M
Dept
------- --------- ---------
ACCT 63237.16 59626.20
ADMN 81434.00 80963.35
FINC 57139.90 72967.60
MKTG 64496.02 99062.66
SALE 64188.25 86150.97
接下来,我想用它制作一个数据框,以便更轻松地操作我的代码并将其复制到剪贴板。但是,我不知道如何将 knitr_kable 转换为数据框。这是我的代码及其导致的错误:
as.data.frame(a)
Error in as.data.frame.default(a) :
cannot coerce class ‘"knitr_kable"’ to a data.frame
knitr-documentation 没有说明这种转换 - 它只是将数据框转换为 a knitr_kable
,这与我想要的相反。
我也尝试过pivottabler
,但这也有类似的问题:结果类也不能被强制转换为数据框。
解决方案
这里有两个可能的答案:
最直接:自己整理数据
如果您对tidyverse风格的方法持开放态度,那么只需几行代码就可以自己进行争论和总结。这将为您提供可以立即使用的数据表输出。
# load packages
library(lessR)
library(dplyr)
library(tidyr)
# load data
d <- Read("Employee")
# use tidyverse-style code to pivot and summarise the data yourself
d %>%
group_by(Gender, Dept) %>%
summarise(Salary_mean = mean(Salary)) %>%
pivot_wider(names_from= "Gender", values_from = "Salary_mean")
将 knitr::kable() 降价输出读入数据框
如果您更喜欢从输出向后工作knitr::kable()
到数据帧,这在这个 SO 问题中得到解决:Markdown table to data frame in R
推荐阅读
- r - 在保留注释的同时解析 R 表达式
- php - 注意:尝试访问第 25 行 C:\xampp\htdocs\twitter\core\classes\follow.php 中 bool 类型值的数组偏移量
- c# - application.System.InvalidOperationException:无法解析类型“Projects.Models.DatabaseContext”的服务
- javascript - Uncaught TypeError: _this.props.data.map is not a function, Map error to render Component
- javascript - 为什么结果与我预期的不同?
- f# - F#:究竟应该如何使用 ToString?
- javascript - 从鼠标单击事件侦听器添加对 Perl CGI 脚本的调用时出现问题
- javascript - React Native 嵌套扁平列表性能不佳
- c++ - 对象生命周期的结束与它何时停止存在之间的关系是什么?
- r - 在R中的表中合并多个保存为xls的html