---
title: "国際脳MRIチュートリアルRmarkdownプログラム"
author: "小池進介｜東京大学"
date: "`r format(Sys.time(), '%Y/%m/%d')`  "
output:
  html_document:
    toc: true
    toc_depth: 3
    toc_float: true
    df_print: paged
    keed_me: true
    theme: flatly
---

## **1. データの確認**
### **1-1. CSVデータを取り込む**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
cols <- c("character",rep("factor", 23),rep("character", 4))
Rdata1 <- read.csv("第2回国際脳MRI・臨床データ解析チュートリアル アンケート.csv",
                  header = T, fileEncoding = "utf-8", colClasses = cols)
```

### **1-2. CSVデータの確認**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
library(DT) #DTパッケージを読み込む
datatable(Rdata1)
```

- 最初の一行はテスト回答、最初の一列はタイムスタンプなので、削除します
- 列名がみずらいので編集します。


### **1-3. CSVデータの編集＆再確認**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
Rdata.colnames <- c("Title",
                    "Field",
                    "MRIanalysisYear",
                    "Difficulty_SRPB",
                    "Difficulty_TS",
                    "Difficulty_ComBat",
                    "Difficulty_BMBprotocol",
                    "Difficulty_BMBpipeline",
                    "Difficulty_BMBTS",
                    "Satisfuction_SRPB",
                    "Satisfuction_TS",
                    "Satisfuction_ComBat",
                    "Satisfuction_BMBprotocol",
                    "Satisfuction_BMBpipeline",
                    "Satisfuction_BMBTS",
                    "Length_SRPB",
                    "Length_TS",
                    "Length_ComBat",
                    "Length_BMBprotocol",
                    "Length_BMBpipeline",
                    "Length_BMBTS",
                    "web_satisfuction",
                    "Useful",
                    "GoogPoint",
                    "Improvement",
                    "Future",
                    "Opinion")
Rdata <- Rdata1[2:nrow(Rdata1), 2:ncol(Rdata1)]
colnames(Rdata) <- Rdata.colnames
datatable(Rdata)
```

___
## **2. 欠損値の確認**
### **2-1. miceパッケージ**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
library(mice) #miceパッケージを読み込む
md.pattern(Rdata)
```
- 欠損値がないとかわいいエラーメッセージが記録されるようです。

___
## **3. Distribution**
### **3-1. summary()**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
summary(Rdata)
```
- みづらいので並び替えたほうが良さそうです


### **3-2. reorder and summary()**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
Rdata.temp <- data.frame(
  factor(Rdata[,1],  levels = c("学部学生", "大学院学生", "研究員", "教員・研究職", "医療職")),
  factor(Rdata[,2],  levels = c("神経科学", "精神医学", "神経内科学", "放射線医学")),
  factor(Rdata[,3],  levels = c("ほぼ未経験", "１年未満", "１～３年", "３～５年", "５年以上", "１０年以上")),
  factor(Rdata[,4],  levels = c("やさしすぎる", "やさしい", "ちょうどよい", "難しい", "難しすぎる", "不参加")), 
  factor(Rdata[,5],  levels = c("やさしすぎる", "やさしい", "ちょうどよい", "難しい", "難しすぎる", "不参加")),  
  factor(Rdata[,6],  levels = c("やさしすぎる", "やさしい", "ちょうどよい", "難しい", "難しすぎる", "不参加")),  
  factor(Rdata[,7],  levels = c("やさしすぎる", "やさしい", "ちょうどよい", "難しい", "難しすぎる", "不参加")),  
  factor(Rdata[,8],  levels = c("やさしすぎる", "やさしい", "ちょうどよい", "難しい", "難しすぎる", "不参加")),  
  factor(Rdata[,9],  levels = c("やさしすぎる", "やさしい", "ちょうどよい", "難しい", "難しすぎる", "不参加")),  
  factor(Rdata[,10], levels = c("満足", "やや満足", "どちらでもない", "やや不満足", "不満足", "不参加")),  
  factor(Rdata[,11], levels = c("満足", "やや満足", "どちらでもない", "やや不満足", "不満足", "不参加")),  
  factor(Rdata[,12], levels = c("満足", "やや満足", "どちらでもない", "やや不満足", "不満足", "不参加")),  
  factor(Rdata[,13], levels = c("満足", "やや満足", "どちらでもない", "やや不満足", "不満足", "不参加")),  
  factor(Rdata[,14], levels = c("満足", "やや満足", "どちらでもない", "やや不満足", "不満足", "不参加")),  
  factor(Rdata[,15], levels = c("満足", "やや満足", "どちらでもない", "やや不満足", "不満足", "不参加")),  
  factor(Rdata[,16], levels = c("長すぎる", "長い", "ちょうどよい", "短い", "短すぎる", "不参加")), 
  factor(Rdata[,17], levels = c("長すぎる", "長い", "ちょうどよい", "短い", "短すぎる", "不参加")), 
  factor(Rdata[,18], levels = c("長すぎる", "長い", "ちょうどよい", "短い", "短すぎる", "不参加")), 
  factor(Rdata[,19], levels = c("長すぎる", "長い", "ちょうどよい", "短い", "短すぎる", "不参加")),  
  factor(Rdata[,20], levels = c("長すぎる", "長い", "ちょうどよい", "短い", "短すぎる", "不参加")),  
  factor(Rdata[,21], levels = c("長すぎる", "長い", "ちょうどよい", "短い", "短すぎる", "不参加")),  
  factor(Rdata[,22], levels = c("大変良かった", "良かった", "どちらでもない", "あまりよくなかった", "良くなかった")),  
  factor(Rdata[,23], levels = c("とても役立つ", "役立つ", "どちらでもない", "役立たない", "全く役立たない")),  
  Rdata[,24:27]
)
colnames(Rdata.temp) <- Rdata.colnames
summary(Rdata.temp)
Rdata <- Rdata.temp
```

*http://highschoolstudent.hatenablog.com/entry/2013/12/15/154341*

### **3-3. summarytoolsパッケージ**
```{r, echo=TRUE, warning=FALSE, message=FALSE, plain.ascii=FALSE}
# library(summarytools) #summarytoolsパッケージを読み込む
#print(dfSummary(Rdata[,1:31], graph.magnif=0.50), method = 'render')
```
**なぜかこれをうごかすとこの先が表示されなくなるので、とりあえずコメントアウトにしています。**
**誰か解決策教えて下さい。**

- こちらのほうがみやすいですが、いい感じに文字化けしています。
*https://niszet.hatenablog.com/entry/2018/07/23/073000*

- おそらくFactorの表記を変えるしかなさそうです。
例えば、
   factor(Rdata[,1],  labels = c("Univ Student", "Graduate Student", "Post-doc", "Research Staff", "Medical Staff"))
とか

*http://m-hiyama.hatenablog.com/entry/20151215/1450140312*


### **3-4. geom_bar()**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
library(ggplot2)
g <- list()
for(i in 1:(ncol(Rdata)-4)){
  g[[i]] <- ggplot(Rdata, aes(x = eval(parse(text = Rdata.colnames[i])))) +  # aes(x = Title) と、""でくくってはいけないため
    geom_bar() +
    xlab(Rdata.colnames[i])
}

# graphの描出
for (i in 1:23) print(g[[i]])
```



```{}
##### Rmarkdownではちいさくてうまくいかなかったので、やめました
# library(gridExtra)
# g.list <- NULL
# for (i in 1:31) g.list <- c(g.list, paste("g[[",i,"]]",sep=""))
# g.list.chr <- as.character("")
# for (i in 1:31) g.list.chr <- paste(g.list.chr, g.list[i], sep = ",")
# library(stringr)
# g.list.chr <- str_sub(g.list.chr, start = 2)
# eval(parse(text = paste("grid.arrange(",g.list.chr,", ncol = 2)",sep = "")))
```

*https://qiita.com/nozma/items/cd98ec7938e0783d5d89*
*https://rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf*


___
## **4. 自由記載分**
### **4-1. 良かった点**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
comments <- data.frame(Rdata[,1:3],Rdata[,24])
colnames(comments)[4] <- Rdata.colnames[24]
comments <- comments[comments[,4]!="",]  # no commentを削除
datatable(comments)
```
- ありがとうございました。

### **4-2. 改善すべき点**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
comments <- data.frame(Rdata[,1:3],Rdata[,25])
colnames(comments)[4] <- Rdata.colnames[25]
comments <- comments[comments[,4]!="",]  # no commentを削除
datatable(comments)
```
- ありがとうございました。

### **4-3. 今後期待する点**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
comments <- data.frame(Rdata[,1:3],Rdata[,26])
colnames(comments)[4] <- Rdata.colnames[26]
comments <- comments[comments[,4]!="",]  # no commentを削除
datatable(comments)
```
- ありがとうございました。

### **4-4. その他ご意見**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
comments <- data.frame(Rdata[,1:3],Rdata[,27])
colnames(comments)[4] <- Rdata.colnames[27]
comments <- comments[comments[,4]!="",]  # no commentを削除
datatable(comments)
```
- ありがとうございました。


___
## **5. Stats**
### **5-1. tableone()**
せっかくなので、MRI解析経験を2群にわけてtableoneで統計かけてみました。

```{r, echo=TRUE, warning=FALSE, message=FALSE}
summary(Rdata[,3])

# というわけで、3年を区切りにしてみます
cat.Rdata <- ifelse(as.numeric(Rdata[,3]) <= 3, "Shorter", "Longer")
Rdata.tableone <- data.frame(Rdata, cat.Rdata)
library(tableone)
vars <- Rdata.colnames[c(1:2,4:23)]
factorVars <- Rdata.colnames[1:2]
table1 <- CreateTableOne(vars = vars, strata = "cat.Rdata", 
                         data = Rdata.tableone, factorVars = factorVars)
table1
```
- あまり差はなさそうです。とりあえず連続変数としてｔ検定もしてみます。
- 不参加を抜かないといけません。

### **5-2. tableone() 連続変数で**
```{r, echo=TRUE, warning=FALSE, message=FALSE}
Rdata.tableone[Rdata.tableone=="不参加"] <- NA
Rdata.tableone2 <- Rdata[,1:3]
for (i in 4:23) Rdata.tableone2 <- data.frame(Rdata.tableone2, as.numeric(Rdata[,i]))
Rdata.tableone2 <- data.frame(Rdata.tableone2, cat.Rdata)
colnames(Rdata.tableone2) <- c(Rdata.colnames[1:23], "cat.Rdata")
vars <- Rdata.colnames[c(1:2,4:23)]
factorVars <- Rdata.colnames[1:2]
table2 <- CreateTableOne(vars = vars, strata = "cat.Rdata", 
                         data = Rdata.tableone2, factorVars = factorVars)
table2
```
- 数が小さいと「やさしすぎる」「満足」「短すぎる」「役立つ」です。
- この結果だと、MRI経験年数が短いとSRPBに関して満足度が低いということになります（が有意かどうかの判断はお任せします。）

## もしこのRmarkdownについて改善点がありましたら、フィードバックください。
## そのまま掲載させていただきたいと思います。