d0 <- read.csv("ESJ57Oral.csv") d <- d0[, c("分野1", "分野2", "分野3", "英語可")] # 水準をそろえる levels.g <- levels(d$分野1) d$分野2 <- factor(d$分野2, levels = levels.g) d$分野3 <- factor(d$分野3, levels = levels.g) # 発表数 3 未満のグループを廃止 g <- d$分野1 table.g <- table(g) removed.g1 <- levels.g[table.g < 3] people.removed.g1 <- g %in% removed.g1 # 第一希望が通らなかった人たちを第二希望に g[people.removed.g1] <- d[people.removed.g1, "分野2"] # 第二希望でもダメだった人のグループを手動で操作 g[40] <- "04_植物繁殖" g[58] <- "04_植物繁殖" # 発表グループわけ終了,水準数の再調節 table.g <- table(g) # 再計算 removed.g <- levels.g[table.g == 0] g <- factor(g) table.g <- table(g) # 再計算 # 生態系管理の分割 (発表会場の都合により) # 第二希望「保全」の人たち (5 名) は移っていただく g[g == "26_生態系管理" & d$分野2 == "25_保全"] <- "25_保全" # 「進化」の分割 (発表会場の都合により, 分割前 13 名) # 第二希望「数理」の人たち (3 名) は移っていただく g[g == "14_進化" & d$分野2 == "15_種多様性"] <- "15_種多様性" # 「物質循環」の分割 (発表会場の都合により, 分割前 13 名) # 第二希望「生態系管理」の人たち (3 名) は移っていただく g[g == "30_物質循環" & d$分野2 == "26_生態系管理"] <- "26_生態系管理" table.g <- table(g) # 再計算 # 発表会場ごとに分割 source("plan19a.R") # 分割ヴェクトル v.g のよみこみ # 会場ごとの集計 list.u0 <- strsplit(sub(" END", "", paste(v.g, collapse = " ")), " SEPARATOR ")[[1]] list.u <- lapply(list.u0, function(x) strsplit(x, " ")[[1]]) for (i in 1:length(list.u)) { unit <- list.u[[i]] cat(sprintf( "会場 %02i (発表数 %2i): %s\n", i, sum(table.g[unit]), paste( sapply(unit, function(x) sprintf("%s (%i)", x, table.g[x])), collapse = ", " ) )) } cat("発表数合計:", sum(sapply(list.u, function(x) sum(table.g[x]))),"\n") # 時間割表生成 n.u <- length(list.u) # ユニット数 (会場数) n.t <- c(12, 12) # 1 日のコマ数 (12 + 12) # 発表時間 get.ptime <- function(t = 1) { day <- ifelse(t <= n.t[1], "3/15", "3/16") t <- (ifelse(t <= n.t[1], t, t - n.t[1]) - 1) / 4 + 9 # => 9:00-12:00 tf <- floor(t) # 1.75 -> 1 c( day = day, time = sprintf("%02i:%02i", tf, (t - tf) * 60) ) } # 口頭発表配列 table.ptime <- sapply(1:sum(n.t), get.ptime) df.p <- data.frame( day = table.ptime[1,], time = table.ptime[2,] ) m.p <- sapply( 1:n.u, function(i) { unit <- list.u[[i]] v.p <- rep(unit, table.g[unit]) k <- 0 col.p <- sapply( 1:sum(n.t), function(time) { k <<- k + 1 v.p[k] } ) } ) df.p <- cbind(df.p, m.p) file <- "oral.csv" cat("# output to", file, "...\n") write.csv(df.p, file = file, row.names = FALSE)