問卷結果可點此連結:問卷結果

library(stringr)
report <- read.csv("C:\\Users\\es901\\Documents\\dsR\\data\\project\\new-Rreport.csv", head = T)

report <- data.frame(lapply(report, as.character), stringsAsFactors = F) # 表格轉成character
report <- report[, -1]      # 移除時間戳記
names(report)[1] <- "name"  # 使用者名稱

for(i in 1:36) # 選項中只留下"A"或"B" 
{
  report[, i+1] <- sapply(str_split(report[, i+1], "-"), "[[", 1)
}

CountScore <- function(row) # 計算各人格分數
{
  score <- rep(0, times = 9)
  
  # set some index for counting score ------------------
  a1 <- c(19); b1 <- c(3, 6, 10, 15, 22, 28, 32)
  a2 <- c(1, 6, 12, 20, 23, 29, 33); b2 <- c(17)
  a3 <- c(4, 7, 10, 30, 34); b3 <- c(14, 23, 26)
  a4 <- c(2, 16, 24, 28); b4 <- c(8, 12, 21, 34)
  a5 <- c(13, 25, 31, 36); b5 <- c(1, 4, 16, 19)
  a6 <- c(5, 14, 18, 21, 32); b6 <- c(9, 25, 29)
  a7 <- c(22); b7 <- c(2, 7, 11, 18, 27, 33, 36)
  a8 <- c(8, 11, 15, 26, 35); b8 <- c(5, 20, 31)
  a9 <- c(3, 9, 17, 27); b9 <- c(13, 24, 30, 35)
  # ----------------------------------------------------
  
  score[1] <- sum(ifelse(row[a1] == "A", 1, 0)) + sum(ifelse(row[b1] == "B", 1, 0))
  score[2] <- sum(ifelse(row[a2] == "A", 1, 0)) + sum(ifelse(row[b2] == "B", 1, 0))
  score[3] <- sum(ifelse(row[a3] == "A", 1, 0)) + sum(ifelse(row[b3] == "B", 1, 0))
  score[4] <- sum(ifelse(row[a4] == "A", 1, 0)) + sum(ifelse(row[b4] == "B", 1, 0))
  score[5] <- sum(ifelse(row[a5] == "A", 1, 0)) + sum(ifelse(row[b5] == "B", 1, 0))
  score[6] <- sum(ifelse(row[a6] == "A", 1, 0)) + sum(ifelse(row[b6] == "B", 1, 0))
  score[7] <- sum(ifelse(row[a7] == "A", 1, 0)) + sum(ifelse(row[b7] == "B", 1, 0))
  score[8] <- sum(ifelse(row[a8] == "A", 1, 0)) + sum(ifelse(row[b8] == "B", 1, 0))
  score[9] <- sum(ifelse(row[a9] == "A", 1, 0)) + sum(ifelse(row[b9] == "B", 1, 0))
  
  return(score)
}

report[, 38:46] <- NA  # 新增計算後的分數欄位
colnm <- c("I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX")
colnames(report)[38:46] <- colnm

for(i in 1:nrow(report))
{
  report[i, 38:46] <- CountScore(report[i, 2:37])
}

finalreport <- cbind(name = report[, 1], report[, 38:46], stringsAsFactors = F)
#write.csv(finalreport, file = "C:\\Users\\es901\\Documents\\dsR\\data\\FINALreport.csv", row.names = F)

finalreport[46, 1] <- "謝佳?"  # 改掉錯誤名字
finalreport[, 11:13] <- NA 
colnames(finalreport)[11:13] <- c("result1", "result2", "result3")
for(i in 1:nrow(finalreport))
{
  a <- finalreport[i, 2:10]
  result <- colnames(a)[apply(a, 1, function(x) which(x >= 6))] # 選出顯著人格

  if (length(result) < 1) {
    result <- rep(NA, times = 3)
  } else if(length(result) < 2) {
    result <- c(result, NA, NA)
  } else if(length(result) < 3) {
    result <- c(result, NA)
  } else
    result <- result
  
  finalreport[i, 11:13] <- result
}

#load("C:\\Users\\es901\\Documents\\dsR\\data\\project\\idname.RData")

alln <- read.csv("C:\\Users\\es901\\Documents\\dsR\\data\\project\\id-from-yichin.csv", head = T)
alln <- data.frame(lapply(alln, as.character), stringsAsFactors = F) # 表格轉成character

finalreport <- merge(finalreport, alln, by = "name", all = T)
finalshort <- finalreport[, c(1, 11:14)]

save(finalreport, file = "C:\\Users\\es901\\Documents\\dsR\\data\\project\\new-finalreport.RData")
save(finalshort, file = "C:\\Users\\es901\\Documents\\dsR\\data\\project\\new-finalshort.RData")