3

いくつかの疫学的データを分析するために ggplot と R を使用しようとしていますが、流行曲線を適切に表示するのに苦労し続けています。

データはこちら

attach(epicurve)
head(epicurve)

     onset age
    1 21/12/2012  18
    2 14/06/2013   8
    3 10/06/2013  64
    4 28/05/2013  79
    5 14/04/2013  56
    6  9/04/2013  66

epicurve$onset <- as.Date(epicurve$onset, format="%d/%m/%Y")
ggplot(epicurve, aes(onset)) + geom_histogram() + scale_x_date(breaks=date_breaks("1 year"), minor_breaks=date_breaks("1 month"), labels = date_format("%b-%Y"))

はこのグラフを与える.これは問題ありませんが、ビン幅はどの期間にも関係がなく、調整には少し試行錯誤が必要です。

この特定のデータセットについて、発症月ごとにケースを表示したいと思います。

これを行う方法を考え出した1つの方法は次のとおりです。

epicurve$monyr <- format(epicurve$onset, "%b-%Y")
epicurve$monyr <- as.factor(epicurve$monyr)
ggplot(epicurve, aes(monyr)) + geom_histogram()

評判システムのため投稿できないグラフを出力します。バーは意味のあるものを表していますが、軸ラベルは爆弾サイトです。scale_x_date軸は日付ではないため、使用して軸をフォーマットできずscale_x_discrete、便利なラベルを付けるために渡す引数を特定できません。

オンセット列で操作を行うことで、これを行う簡単な方法があるはずだと感じています。誰か私に指針を教えてもらえますか?

4

2 に答える 2

1

1 つのオプションは、ggplot の外部でデータを集計してから を使用することgeom_barです。これにより、月ごとのカウントが生成されます。

2013 年 9 月 21 日編集。月数のない月を表示するようにプロットを変更。

epicurve <- read.csv("epicurve.csv", sep=",", header=T)

# initial formatting
epicurve$onset <- as.Date(epicurve$onset, format="%d/%m/%Y")    # convert to Date class
epicurve$onset <- strftime(epicurve$onset, format="%Y/%m")      # convert to Year-month
epicurve$onset <- paste(epicurve$onset, "/01", sep = "")        # add arbitrary day on to end to make compatible w/ ggplot2

# aggregate by month
onset_counts <- aggregate(epicurve$onset, by = list(date = epicurve$onset), length) # aggregate by month
onset_counts$date = as.Date(onset_counts$date, format = "%Y/%m/%d") # covert to Date class

# plot
library(ggplot2)
library(scales)
ggplot(onset_counts, aes(x=date, y=x)) + geom_bar(stat="identity") + theme_bw() + theme(axis.text.x = element_text(angle=90, hjust = 1, vjust = 1)) +
    ylab("Frequency") + xlab(NULL) + scale_x_date(breaks="month", labels=date_format("%Y-%m"))
于 2013-09-19T04:08:29.207 に答える