У меня есть большой фрейм данных, который я суммирую несколькими способами, используя describeBy
из библиотеки psych
следующим образом:
library(tidyverse)
library(openxlsx)
library(psych)
.
.
.
# Describe by Region
lst1 <- describeBy(df[QUESTIONS], df[REGION_DESCRIPTOR])
# Describe by Doctor
lst2 <- describeBy(df[QUESTIONS], df[CARE_DESCRIPTOR])
Затем я создаю новую книгу
wb = createWorkbook()
и начните пытаться записать в него lst1, lst2,...., по одному элементу на лист:
addWorksheet(wb, REGION_DESCRIPTOR)
writeData(wb, REGION_DESCRIPTOR, lst1)
addWorksheet(wb, CARE_DESCRIPTOR)
writeData(wb, CARE_DESCRIPTOR, lst2)
К сожалению, я получаю сообщение об ошибке:
Error in as.data.frame.default(x, stringsAsFactors = FALSE) :
cannot coerce class ‘c("psych", "describeBy")’ to a data.frame
Как я могу записать каждый объект describeBy
на лист, используя openxlsx
? Я пробовал использовать writexl
, и хотя он работает, меня не устраивает тот факт, что он записывает каждую сводку, сгенерированную describeBy
, на другой рабочий лист. Поскольку у меня есть около дюжины describeBy
, каждая с 3-5 категориями, это быстро становится громоздким.
Заранее спасибо за вашу помощь
Томас Филипс
dput(df)
в вопрос, чтобы помочь вам! - person Duck   schedule 07.08.2020do.call(rbind, describeBy(mtcars[, 'mpg'], mtcars[, 'vs']) )
- person akrun   schedule 07.08.2020> dput(lst1) structure(list(ASIA_HIGH_INCOME = structure(list(vars = 1:17, n = c(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), ..., row.names = c("Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10", "Q11", "Q12", "Q13", "Q14", "Q15", "Q16", "Q17"))), .Dim = 10L, .Dimnames = list( Region = c("ASIA_HIGH_INCOME", "ASIA_MIDDLE_INCOME", ..., "WESTERN_EUROPE")), call = by.data.frame(data = x, INDICES = group, FUN = describe, type = type), class = c("psych", "describeBy"))
- person Thomas Philips   schedule 07.08.2020