У меня есть таблица с 10 столбцами. Столбцы имеют следующие названия: «Месяц», «Год», «Консультирование», «Встреча», «Еда», «Печать», «Расходные материалы», «Обучение», «Библиотека ссуды», «Другое»
Я хочу пройтись по каждой колонке причины и создать таблицу с разбивкой по месяцам по Y и году по X, а также сумму для этой категории причин.
Я попытался создать цикл for и использовать семейство функций sapply / lapply. Однако я не могу пройти мимо «Советов». Но если я запускаю свою функцию в каждом отдельном столбце, она работает.
# Sample Data
AttendanceTab <- data.frame(Month = c("Oct", "Nov", "Oct", "Jan", "Feb",
"Mar", "May", "Oct"),
Year = c( 2018, 2017, 2017, 2019, 2018, 2019,
2018, 2017),
Advising = c(1, 1, 1, 0, 0, 1, 0, 0),
Hang.Out = c(0, 0, 1, 0, 1, 1, 1, 0),
Food = c(1, 1, 1, 0, 0, 1, 1, 1))
attendance_summary <- function(ReasonName, FUN = sum) {
tapply(AttendanceTab[, ReasonName],
AttendanceTab[,1:2], sum)
}
attendance_summary("Advising")
attendance_summary("Hang.Out")
attendance_summary("Food")
attendance_summary("Printing")
attendance_summary("Supplies")
attendance_summary("Studying")
attendance_summary("Lending.Library")
attendance_summary("Other")
Complexes <- dim(AttendanceTab)[2]
reasons <- as.character(c("Advising", "Hang Out", "Food",
"Printing", "Supplies", "Studying", "Lending Library",
"Other"))
for(i in 1:Complexes) {
RR <- reasons[[i]]
ADSum <- attendance_summary(RR)
print(ADSum)
}
sapply(AttendanceTab, attendance_summary)
#Also tried
sapply(reasons, attendance_summary)
например, причины [[1]] работают и дают соответствующую таблицу, но когда она переходит ко второму элементу причины, она возвращает:
Ошибка в [.data.frame
(посещаемость2, ReasonName):
выбраны неопределенные столбцы