はじめに
大分昔に始めたきりでいたR言語の続きだったり、そうでなかったりするよ。興味があったら前の記事も見てね。
作業ディレクトリの設定
文章が長くなりそうなので、いつものだらだらした前口上は今回はできなかった。
まず、データファイルを読み込む前に作業ディレクトリを決めるよ。
・作業用のディレクトリの設定
setwd("C:/***")
※ ""の中は任意のディレクトリを設定
・作業ディレクトリの確認
getwd() [1] "C:/***"
設定したディレクトリになっていれば大丈夫だよ。
データファイルの読み込み(csvファイル)
今回はこちらからデータを拝借
1 自殺者数の推移|平成26年版自殺対策白書 本文(HTML形式) - 内閣府
こちらの自殺者数の推移のデータを使っていじっていきます。
普通は打撃成績とかそういった当たり障りない情報を使って計算するのだろうけど、ここは僕なのでこんなデータでやるよ。
まずはデータを読み込むよ。さっき、設定した作業スペースにファイルを置いて、下の
headerをFALSEにすると一番上にV1、V2、...がつくよ。
読みこむだけならread.csv()で十分だよ。
> suicide <- read.csv("f1-01.csv", header=FALSE) > suicide V1 V2 V3 V4 1 第1-1図 自殺者数の推移(自殺統計) 2 3 総数 男 女 4 S53 20,788 12,859 7,929 5 S54 21,503 13,386 8,117 6 S55 21,048 13,155 7,893 7 S56 20,434 12,942 7,492 8 S57 21,228 13,654 7,574 9 S58 25,202 17,116 8,086 10 S59 24,596 16,508 8,088 11 S60 23,599 15,624 7,975 12 S61 25,524 16,497 9,027 13 S62 24,460 15,802 8,658 14 S63 23,742 14,934 8,808 15 H1 22,436 13,818 8,618 16 H2 21,346 13,102 8,244 17 H3 21,084 13,242 7,842 18 H4 22,104 14,296 7,808 19 H5 21,851 14,468 7,383 20 H6 21,679 14,560 7,119 21 H7 22,445 14,874 7,571 22 H8 23,104 15,393 7,711 23 H9 24,391 16,416 7,975 24 H10 32,863 23,013 9,850 25 H11 33,048 23,512 9,536 26 H12 31,957 22,727 9,230 27 H13 31,042 22,144 8,898 28 H14 32,143 23,080 9,063 29 H15 34,427 24,963 9,464 30 H16 32,325 23,272 9,053 31 H17 32,552 23,540 9,012 32 H18 32,155 22,813 9,342 33 H19 33,093 23,478 9,615 34 H20 32,249 22,831 9,418 35 H21 32,845 23,472 9,373 36 H22 31,690 22,283 9,407 37 H23 30,651 20,955 9,696 38 H24 27,858 19,273 8,585 39 H25 27,283 18,787 8,496 40 41 資料:警察庁「自殺統計」より内閣府
う~ん、中身確認しなかったからこのままだと余計な情報をひっぱってきている気がする。余分と思われる情報を除き形を整えます。
> suicide <- read.csv("f1-01.csv",skip=2,nrows=36,header=T) > suicide X 総数 男 女 1 S53 20,788 12,859 7,929 2 S54 21,503 13,386 8,117 3 S55 21,048 13,155 7,893 4 S56 20,434 12,942 7,492 5 S57 21,228 13,654 7,574 6 S58 25,202 17,116 8,086 7 S59 24,596 16,508 8,088 8 S60 23,599 15,624 7,975 9 S61 25,524 16,497 9,027 10 S62 24,460 15,802 8,658 11 S63 23,742 14,934 8,808 12 H1 22,436 13,818 8,618 13 H2 21,346 13,102 8,244 14 H3 21,084 13,242 7,842 15 H4 22,104 14,296 7,808 16 H5 21,851 14,468 7,383 17 H6 21,679 14,560 7,119 18 H7 22,445 14,874 7,571 19 H8 23,104 15,393 7,711 20 H9 24,391 16,416 7,975 21 H10 32,863 23,013 9,850 22 H11 33,048 23,512 9,536 23 H12 31,957 22,727 9,230 24 H13 31,042 22,144 8,898 25 H14 32,143 23,080 9,063 26 H15 34,427 24,963 9,464 27 H16 32,325 23,272 9,053 28 H17 32,552 23,540 9,012 29 H18 32,155 22,813 9,342 30 H19 33,093 23,478 9,615 31 H20 32,249 22,831 9,418 32 H21 32,845 23,472 9,373 33 H22 31,690 22,283 9,407 34 H23 30,651 20,955 9,696 35 H24 27,858 19,273 8,585 36 H25 27,283 18,787 8,496
とりあえずこんな感じ。
これでデータの調達はできたので次回は集計とかやっていきたい。
今日はもう遅いから終わり。また次回。次回があればね。
ファイルデータの出力
次回もここからいじればできるけど、僕のことなのでそんな同じ作業をやっていたら面倒臭がると思う。
だから加工したデータを出力して終了するよ。
> write.table(suicide,"output.txt",quote=F,sep="\t",row.names=F,col.names=T) > read.table("output.txt") V1 V2 V3 V4 1 X 総数 男 女 2 S53 20,788 12,859 7,929 3 S54 21,503 13,386 8,117 4 S55 21,048 13,155 7,893 5 S56 20,434 12,942 7,492 6 S57 21,228 13,654 7,574 7 S58 25,202 17,116 8,086 8 S59 24,596 16,508 8,088 9 S60 23,599 15,624 7,975 10 S61 25,524 16,497 9,027 11 S62 24,460 15,802 8,658 12 S63 23,742 14,934 8,808 13 H1 22,436 13,818 8,618 14 H2 21,346 13,102 8,244 15 H3 21,084 13,242 7,842 16 H4 22,104 14,296 7,808 17 H5 21,851 14,468 7,383 18 H6 21,679 14,560 7,119 19 H7 22,445 14,874 7,571 20 H8 23,104 15,393 7,711 21 H9 24,391 16,416 7,975 22 H10 32,863 23,013 9,850 23 H11 33,048 23,512 9,536 24 H12 31,957 22,727 9,230 25 H13 31,042 22,144 8,898 26 H14 32,143 23,080 9,063 27 H15 34,427 24,963 9,464 28 H16 32,325 23,272 9,053 29 H17 32,552 23,540 9,012 30 H18 32,155 22,813 9,342 31 H19 33,093 23,478 9,615 32 H20 32,249 22,831 9,418 33 H21 32,845 23,472 9,373 34 H22 31,690 22,283 9,407 35 H23 30,651 20,955 9,696 36 H24 27,858 19,273 8,585 37 H25 27,283 18,787 8,496