Skip to content

Instantly share code, notes, and snippets.

@mokjpn
Created May 12, 2017 15:15
Show Gist options
  • Save mokjpn/51e8dac561ecf2c8247b3072bd1b87f5 to your computer and use it in GitHub Desktop.
Save mokjpn/51e8dac561ecf2c8247b3072bd1b87f5 to your computer and use it in GitHub Desktop.
いわゆる目標症例数と症例登録の進捗状況のグラフを書いてみよう
## いわゆる目標症例数とリクルートの進捗状況のグラフ
# ダミーの日付データを作る
# リクルート日付は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