午前
・修論手伝い(データ解析検討)
・個人ゼミ
午後
・文献経理
・授業準備
学生に、「そのうち教えるからデータ入力だけしておいて」と言って、ほったらかしにしていたRによるグラフ作成。
積み上げ折れ線グラフと、地図作成方法について、教え方を検討した。実際に教えるのは後日。
データは、いわゆるスタック形式(縦長データ)
本研究室では日付を8桁の数値(本日は20200818となる)で記録しているので、このままグラフにすると、20200831〜20200901までの70がデータがない余白になる。
ハマり①:8桁の数値を日付データに変換する。as.Data()を使うことが判明するまで、結構な時間を要した。
#データをdata_popuとして読み込んだ #数字ではas.Dateできないため文字に変換 data_popu$date_sum <- as.character(data_popu$date_sum) #日付に変換 data_popu$date_sum <- as.Date(data_popu$date_sum, "%Y%m%d")
スタック形式は1行1個体を意味しているので、採集日ごとの個体数を数える。採集日(date_sum)ごとの行の数を数えれば良い。行の数はlength()で数えることができる。
ハマり②:以前は、こんな時はtapply()を使っていたが、ネットを参考にaggregate()を使ったら少しハマった。
data_day <- aggregate(data_popu, by=list(data_popu$date_sum), length) plot(data_day$date~data_day$Group.1, type="b")
8桁の数値が日付として認識されたので(2020-08-18となっている)、無駄な余白がなくなった。
続いて、種ごとの積み上げ折れ線を作りたい。そのためには、採集日ごとの種ごとの個体数データが必要。
ハマり③:reshape2が良く分かっていない。ネットで調べたママ使った。
採集日ごとの種ごとの個体数(行数)を整理する。ただし、アスンタック形式(横広データ)。
library(dplyr) #group_by()、summarize()、select()に必要 library(reshape2) #dcast()、melt()に必要 library(ggplot2) #採集日(date_sum)ごとの種(spe)ごとに行数(個体数)をまとめる。 frog <- dcast(data_popu, date_sum~spe, fun.aggregate=length) frog
下記で使えるように縦長にする。
frog_tsumi <- melt(frog, id.vars = "date_sum") frog_tsumi
ggplot2で作図する。
ハマり④:そもそもggplot2に慣れていないのだが、日付のxlimは「as.Date(""),as.Date("")」で指定することに悩んだ。
tsumiage <- ggplot(data = frog_tsumi) + geom_area( mapping= aes( x = date_sum , y = value , fill = variable)) + xlim(as.Date("2017-01-01"), as.Date("2017-12-31")) plot(tsumiage)
参考したサイト