我正在使用来自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_kable,这与我想要的正好相反。
我也尝试过pivottabler,但这也存在类似的问题:也不能强迫生成的类强制使用dataframe。
发布于 2021-09-16 15:40:39
以下是两个潜在的答案:
最直接的方法是:自己争论数据。
如果您对tidyverse-style方法持开放态度,那么只需几行代码就可以完成争论和总结。这将为您提供一个可以立即使用的datatable输出。
# 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")将针织品::kable()标记输出读入数据帧
如果您希望从knitr::kable()输出反向工作到dataframe,这将在以下问题中得到解决:Markdown table to data frame in R
https://stackoverflow.com/questions/69211247
复制相似问题