【发布时间】:2023-03-30 23:45:01
【问题描述】:
我有一个有 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)
例如reasons[[1]] 有效并给出了适当的表格,但是当它移动到第二个reasons元素时,它返回:
[.data.frame(attendance2, , ReasonName) 中的错误:
选择了未定义的列
【问题讨论】:
-
请make this question reproducible 包含一些纯文本格式的示例数据和所需输出的示例。
-
谢谢!我刚刚添加了一些示例数据。
标签: r function dataframe for-loop sapply