def 小児科医():

かけだし小児科医が仕事の合間にプログラミングを勉強するブログです。

Rを触ってみる話②

前回↓

 

defpediatric.hatenablog.com

今回はパッケージについて。

なんか意外とRがPythonの知識で動かせて嬉しい。

 

パッケージのダウンロード、インストール

今回は'ggplot2'をインストールする。matplotlib的なやつか?

install.packages("ggplot2")でインストール

library("ggplot2")でロード

 

 

散布図

gplot内のqplotを使ってみる。(quick plotの略らしい)

qplot(Boston'age', Boston'medv')

ヒストグラム

引数一つにしたらいいだけ

qplot(Boston'age')

ここで、データフレームの特定の列を取り出すのに[]を使っていたのだが、$で表せることを知る。RStudioで予測変換的なの出るし。

python的には使いたい感あるが$が便利すぎるのでそっちを使う。

 

棒グラフ

なんかこの関数を+で足してく感じがいまいち慣れない。

frequency <- as.data.frame(table(train$Sex))

ggplot(frequency, aes(x=Var1, y=Freq)) +
  geom_bar(stat="identity")

円グラフ

frequency <- as.data.frame(table(train$Sex))

ggplot(data, aes(x="", y=Freq, fill=Var1)) +
  geom_bar(width = 1, stat = "identity") +
  coord_polar("y", start=0)

クロス集計表

breaksにリストを入れればその範囲ごとに区切るし、整数を渡せば均等に切ってくれる。

ageGroup <- cut(Boston$age, breaks = 10)

 medvGroup <- cut(Boston$medv, breaks = 10)

> table(ageGroup, medGroup)
             medGroup
ageGroup      (4.96,9.5] (9.5,14] (14,18.5] (18.5,23] (23,27.5] (27.5,32] (32,36.5] (36.5,41] (41,45.5] (45.5,50]
  (2.8,12.6]           0        0         0         1         9         3         0         0         1         0
  (12.6,22.3]          0        0         1         8        10         3         6         1         1         1
  (22.3,32]            0        0         1         7         9         6         2         1         0         3
  (32,41.7]            0        0         2        15         7         8         7         0         2         1
  (41.7,51.4]          0        0         1        17         9         1         3         0         0         1
  (51.4,61.2]          0        1         3        16         8         3         4         1         1         1
  (61.2,70.9]          0        1         3        20         5         5         2         0         1         2
  (70.9,80.6]          2        3         6        14         9         4         1         1         2         0
  (80.6,90.3]          3        6        16        27         9         3         1         2         1         3
  (90.3,100]          17       44        52        29         9         3         3         1         1         9

なんかズレた。

 

まだ慣れない。というか慣れてるpythonでやった方が早い。

続く。