ログってなんぼ

日々のメモです

R:読み込んだデータから新たな列を作ったり型変換をしたり

まだまだ深淵なる統計解析のセカイに行くための準備段階にすら入ってない。 でも一歩出さなきゃね。目標は決して向こうから近づいては来ないのだ。まあ道のりを楽しもう。

#
# 人口動態総覧,都道府県(20大都市再掲)別
# http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_csvDownload_&fileId=000005945225&releaseCount=3
#

# データの読み込み
jinko = read.csv("./data/jinko1.csv")

# とりあえずデータをみてみる
jinko
              X      出生数     X.再掲. 死亡数 X.再掲..1 X.1        自.然 死産数  X.2  X.3 周産期死亡数 X.4 X.5
1    01北海道       39292        3804  56970        84  41       -17678   1309  513  796          168 138  30
2    02青 森        9531         900  16419        23   8        -6888    256  120  136           40  33   7
3    03岩 手        9310         842  22335        43   5       -13025    256  114  142           46  45   1
4    04宮 城       18062        1723  33975        85  27       -15913    484  224  260           67  50  17
5    05秋 田        6658         661  14642        15   5        -7984    192  101   91           27  23   4
6    06山 形        8555         700  14880        28  17        -6325    218  121   97           38  24  14
7    07福 島       15072        1372  26106        34  10       -11034    401  186  215           54  49   5
.
.

# 県名、出生数、死亡数だけのデータにする
j = jinko[ , c(1, 2, 4)]
j
              X      出生数 死亡数
1    01北海道       39292  56970
2    02青 森        9531  16419
3    03岩 手        9310  22335
.
.
64   64 堺         7350   7394
65   65神 戸       12720  14289
66   66岡 山        6698   6167
67   67広 島       11485   9409
68   68北九州        8377  10380
69   69福 岡       14370  10456
# 48番目以降は今回使わない(47都道府県だけで良い)ので消す
j.47 = j[1:47,]
# 出生率に対する死亡率を増減係数として追加してみる
j.47["増減係数"] = c(j.47$出生数/j.47$死亡数) # エラーになって計算できなかった
 警告メッセージ:
In Ops.factor(j.47$出生数, j.47$死亡数) : /  因子に対しては無意味です
# str()で見てみる
str(j.47)
'data.frame':  47 obs. of  4 variables:
 $ X       : Factor w/ 69 levels "01北海道","02青 森",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ 出生数  : Factor w/ 69 levels "     ・",..: 36 67 66 28 49 64 17 32 21 20 ...
 $ 死亡数  : int  56970 16419 22335 33975 14642 14880 26106 29910 20469 20930 ...
 $ 増減係数: logi  NA NA NA NA NA NA ...
# factorを数値にしてから再チャレンジ
j.47["増減係数"] = c(as.numeric(as.character(j.47$出生数))/j.47$死亡数) # でけた
  # as.characterを先に通さないと、実際の値を変換対象にすることができない
head(j.47)
           X 出生数 死亡数  増減係数
1 01北海道  39292  56970 0.6896963
2 02青 森   9531  16419 0.5804860
3 03岩 手   9310  22335 0.4168346
4 04宮 城  18062  33975 0.5316262
5 05秋 田   6658  14642 0.4547193
6 06山 形   8555  14880 0.5749328
# 増減係数が1以上のものを抜き出してみる
j.47[j.47$増減係数 >= 1,] # 沖縄優秀
            X 出生数 死亡数 増減係数
11 11埼 玉  58059  57670 1.006745
13 13東 京 106027 105723 1.002875
14 14神奈川  76000  70946 1.071237
23 23愛 知  68973  59720 1.154940
25 25滋 賀  13338  11884 1.122349
47 47沖 縄  16918  10686 1.583193
# 増減係数あれこれ
jx = j.47$増減係数
mean(jx) # 平均
[1] 0.7760599
median(jx) # 中央値
[1] 0.7682996
max(jx) # 最大
[1] 1.583193
min(jx) # 最小
[1] 0.4168346
# 全部これで見れるけど
summary(jx)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
 0.4168  0.6423  0.7683  0.7761  0.8364  1.5830

#
# 離婚との関係
#

j = jinko[ , c(1, 2, 4, 15)]
j.47 = j[1:47,]
j.47["増減係数"] = c(as.numeric(as.character(j.47$出生数))/j.47$死亡数)
# 増減係数の大きい順に並べ替えてみる
head(j.47)
           X 出生数 死亡数 離婚件数  増減係数
1 01北海道  39292  56970    11847 0.6896963
2 02青 森   9531  16419     2377 0.5804860
3 03岩 手   9310  22335     2038 0.4168346
4 04宮 城  18062  33975     3826 0.5316262
5 05秋 田   6658  14642     1555 0.4547193
6 06山 形   8555  14880     1703 0.5749328
sortcond = order(j.47$増減係数, decreasing=T) # まずorderで条件を作り
j.47.sorted = j.47[sortcond,] # その条件でデータにアクセスする
# グラフで見てみる
plot.new()
plot(j.47.sorted$増減係数,type="l",col="red",xlab="",ylab="")
par(new=T)
barplot(as.numeric(as.character(j.47.sorted$離婚件数)),col="lightblue",main="zougen : rikon",xlab="",ylab="",axes=F)
axis(side=4)

f:id:Okisanjp:20160712183710p:plain

R関連の練習はこちらのリポジトリで公開してます。

https://github.com/okisanjp/R_practice

Rの勉強はRStudio使うと楽です

RStudio (非公式日本語版)