crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

台風の発生数と上陸数のデータの分析2 - R言語でNAを0に変換するには、is.na関数を使う。

 

www.crosshyou.info

 の続きです。前回はデータをR言語に読込んだところで終わりました。今回は、台風の発生数と上陸数のデータのNAを0に変換します。

R言語でNAを0に変換するには、is.na関数を使います。

vector <- c(1, 2, NA, 4, NA, 5)

というベクトル、vectorがあったら、

vector[is.na(vector)] <- 0

とすればいいはずです。

早速やってみます。

f:id:cross_hyou:20190919195800j:plain

うまくできました!

この作業をすべての列で実行すればいいですが、あと23回もありますから、関数を作って一括してNAを0に変換しましょう。

まず、ベクトルの中のNAを0に変換する関数を作ります。

f:id:cross_hyou:20190919200117j:plain

function関数で関数を作りました。それでは、hasseiのM2で確かめてみます。

f:id:cross_hyou:20190919200348j:plain

あれ?ダメですね。。どこが悪かったのかな?

f:id:cross_hyou:20190919200719j:plain

 

これでどうでしょうか?ベクトルを出すように1行追加しました。やってみます。

f:id:cross_hyou:20190919200918j:plain

やった!うまくいきました。最後にRのコンソールに結果を出力するようにしないといけないのですね。

こうして関数を作成したので、apply関数で全部の列に適用します。

f:id:cross_hyou:20190919201152j:plain

うまくNAを0に変換できました!zerotwo関数は全部の結果を出力してしまうので、すこし変更しましょう。

f:id:cross_hyou:20190919201423j:plain

最後の出力のときに、head関数ではじめの6つのデータしか出さないようにしました。

それでは、jourikuのデータフレームで実行しましょう。

f:id:cross_hyou:20190919201719j:plain

うまくできました。

こうして、NAを0に変換したので、summary関数で台風の発生数と上陸数のデータの平均値などを見てみましょう。

f:id:cross_hyou:20190919201912j:plain

あれれ!?  NAがあります。。。あ!zeroNAで処理した結果を改めてなにか別のデータフレームに保存しないといけなかったのですね。

もう一度やります。

f:id:cross_hyou:20190919202235j:plain

すばらしい! 台風の発生は年間では21から28回ですね。ひと月に6回というのが最大です。

上陸数も見てみます。

f:id:cross_hyou:20190919202530j:plain

とここまでやって、いま、間違いをおかしていることに気が付きました。zeroNA関数ははじめの6個のデータしか取得しない関数でした。

関数はzerotwo関数を使えばよかったですね。

f:id:cross_hyou:20190919203000j:plain

zerotwo関数で処理したデータフレーム、HASS(発生数)JOUR(上陸数)を作成しました。

発生数を見ると、年間で少ないときは14個、多いときは39個も台風が発生しています。

月間では10個が最多です。

上陸数も見てみましょう。

f:id:cross_hyou:20190919203207j:plain

上陸は年間で10回が最多です。月間では4回が最多ですね。

ということで今回は以上です。