Создайте несколько таблиц 2x2 - PullRequest
0 голосов
/ 19 ноября 2018

Мне нужно создать несколько таблиц 2x2 для множества переменных.

образец данных:

Month <- c("Jan", "Feb", "March", "April")
Quiz1 <- c("90", "80", "100", "70")
Quiz2 <- c("100", "70", "50", "20")
Quiz3 <- c("60", "35", "26", "80")

df <- data.frame(Month, Quiz1, Quiz2, Quiz3)

Я хотел бы получить 2x2 каждого теста по месяцам, а затем сохранить его в формате CSV, чтобы я мог создавать гистограммы - круговые диаграммы и т. Д. В Excel, и их нужно распространять с не R пользователи. Это может быть один и тот же CSV или несколько, что не имеет значения. Вот как я это делал (около 20 викторин), но я знаю, что должен быть более эффективный способ.

Quiz1 <- table(df$Month, df$Quiz1)
Quiz2 <- table(df$Month, df$Quiz2)
Quiz3 <- table(df$Month, df$Quiz3)

write.csv(Quiz1, "filepath...")
write.csv(Quiz2, "filepath...")
write.csv(Quiz3, "filepath...")

Я нашел этот ответ: цикл для табулирования переменных во фрейме данных , и он будет работать отлично, за исключением того, что это только для таблиц частот, и я не уверен, как адаптировать его для этого сценария, и я не не хватает очков, чтобы оставить комментарий.

Заранее благодарю за любую помощь!

1 Ответ

0 голосов
/ 19 ноября 2018

Мы можем использовать lapply для циклического перебора столбцов, кроме столбца «Месяц», а затем получить table «Месяца» с помощью зацикленного столбца. Результатом будет list таблиц

lst <- lapply(df[-1], function(x) table(df$Month, x))
names(lst) <- paste0("Quiz", seq_along(lst))

Вместо создания нескольких глобальных переменных, единственная list будет служить цели. После преобразований используйте write.csv для записи в разные файлы

lapply(names(lst), function(x) write.csv(lst[[x]], file = paste0(x, ".csv"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...