尝试遍历列以生成每个列的 table
Trying to loop through columns to produce a table for each
我有一个包含 10 列的 table。这些列具有以下名称:"Month"、"Year"、"Advising"、"Hang Out"、"Food"、"Printing"、"Supplies"、"Studying"、"Lending Library"、"Other"
我想遍历每个原因列并创建一个 table 按 Y 中的月份和 X 中的年份以及该原因类别的总和进行分解。
我试图创建一个 for 循环并使用 sapply/lapply 函数族。但是,我不能移动过去 "Advising." 但是如果我 运行 我的功能在每个单独的列上它确实有效。
# 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)
for example reasons[[1]] 工作并给出适当的 table,但是当它移动到第二个 reasons 元素时,它 returns:
[.data.frame
(attendance2, , ReasonName) 中的错误:
选择了未定义的列
定义 reasons
时有错别字。在 AttendanceTab
中,您有 Hang.Out
列,在 reasons
中,您将其称为 Hang Out
- space
而不是 .
。
为避免这种情况,您可以使用
reasons <- names(AttendanceTab)[-c(1:2)]
Complexes <- length(reasons)
我有一个包含 10 列的 table。这些列具有以下名称:"Month"、"Year"、"Advising"、"Hang Out"、"Food"、"Printing"、"Supplies"、"Studying"、"Lending Library"、"Other"
我想遍历每个原因列并创建一个 table 按 Y 中的月份和 X 中的年份以及该原因类别的总和进行分解。
我试图创建一个 for 循环并使用 sapply/lapply 函数族。但是,我不能移动过去 "Advising." 但是如果我 运行 我的功能在每个单独的列上它确实有效。
# 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)
for example reasons[[1]] 工作并给出适当的 table,但是当它移动到第二个 reasons 元素时,它 returns:
[.data.frame
(attendance2, , ReasonName) 中的错误:
选择了未定义的列
定义 reasons
时有错别字。在 AttendanceTab
中,您有 Hang.Out
列,在 reasons
中,您将其称为 Hang Out
- space
而不是 .
。
为避免这种情况,您可以使用
reasons <- names(AttendanceTab)[-c(1:2)]
Complexes <- length(reasons)