Created
May 12, 2017 15:15
-
-
Save mokjpn/b989da5d99eac63f15c848182742a1e3 to your computer and use it in GitHub Desktop.
いわゆる目標症例数と症例登録の進捗状況のグラフを書いてみよう
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## いわゆる目標症例数とリクルートの進捗状況のグラフ | |
# ダミーの日付データを作る | |
# リクルート日付は2014-01-01からの2年間からランダムに100日 | |
dates <- as.Date("2014-01-01") + 365*2*runif(100) | |
# それぞれの日に10人までのランダムな人数がリクルートされたとするダミーデータ、100日分 | |
number <- floor(10*runif(100)) | |
# 1行1症例のデータセットのイメージ。登録日だけだけど。 | |
data <- data.frame(date=rep(dates, number)) | |
str(data) | |
# 1日ずつだと細かすぎるので、1週間ごとの集計にまとめよう。 | |
# 1週間ごとのリクルート数を集計した新たなデータセット:datacat | |
data$datecat <- cut(data$date, breaks="week") | |
datacat <- as.data.frame(table(data$datecat)) | |
datacat$date <- as.Date(as.character(datacat$Var1)) | |
# 累計症例数データを cumsum 関数を使って作ろう | |
datacat$cumFreq <- cumsum(datacat$Freq) | |
# グラフを作成 | |
library(ggplot2) | |
g <- ggplot( | |
datacat, # データセットはdatacat | |
aes( | |
x = date # X軸はdatacat$date | |
)) + | |
xlim(c(as.Date("2014-01-01"),as.Date("2017-12-31"))) + # 横軸を2014-01-01から2017-12-31までとする | |
ylim(c(0,1000)) + # 縦軸を0から1000までとする。1000例が目標というイメージ。 | |
geom_bar(aes( y = Freq), stat="identity", col="green") + # 1週間ごとの登録症例数の棒グラフ | |
geom_path(aes(y = cumFreq, group=1)) # 累積症例数の線グラフ | |
g <- g+ geom_smooth(aes(y=cumFreq, group=1), method="lm",fullrange=TRUE) + # 累積登録症例数から回帰直線を追記 | |
geom_segment(aes(y = 1000, yend=1000, xend=as.Date("2017-12-31")),col="red") # 目標症例数(1000)のところに直線を引く | |
# プロット実行 | |
plot(g) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment