スクリーンショット_2018-08-29_19

Edx:ハーバード大学のデータサイエンス(R)学習記録3

最近Pythonでのデータスクレイピングが話題ですが、統計を勉強してきた人にはRも有名です。Rを勉強するには書籍も多くありますが、オンラインで世界の大学の講義が無料で受けられるEdxにもRを学べる講座があります。

Edxは前編英語なのですが、実はgoogle cromeの自動翻訳機能で動画まで翻訳してくれるので案外なんとかなったりします。

Edxは日本では馴染みが無いようなので、自分への備忘録と「英語できなくてもEdxでここまでできた」という過程を上げていきたいと思います。

ハーバード大学が提供する「データサイエンス:Rの基礎」

前回はセクション1でしたが、今回はセクション2.1「ベクトル」です。

2.1ベクトル

ベクトルとは色分けされた縦の列のことです。
このベクトルの操作について学びました。

ベクトルの作り方:C関数を使う

患者ID <- c(1,2,3,4,5) #もしくは   患者ID <- c(1:5)   でもOK
年齢 <- c(65,46,86,76,45)
身長 <- c(165,147,163,158,173)
体重 <- c(48,50,62,64,67)
性別 <- c("男性","女性","女性","男性","女性") #文字の時は""でくくる

でもこれだと1つ1つのベクトルはバラバラで、表になっていません。

names(患者ID) <- 年齢
> 患者ID
65 46 86 76 45 
 1  2  3  4  5 


data <- data.frame(患者ID,年齢,身長,体重,性別)
data
  患者ID 年齢 身長 体重 性別
1      1   65  165   48 男性
2      2   46  147   50 女性
3      3   86  163   62 女性
4      4   76  158   64 男性
5      5   45  173   67 女性

names(くっつけられたい方) <- くっつけたい方
これで2つがくっつきます。でも全部くっつけるならdata.frame()でくっつけます。でも普通はエクセルでできた表を読み込むから使うのかな・・・?

ベクトルやデータフレームから好きなところを抜き出す

 #ベクトルの中身を選んでみるとき
> 年齢[2:4]
[1] 46 86 76      #年齢の2,3,4番目を出して
> 年齢[c(2,3,4)]  #cを使う!
[1] 46 86 76      #上に同じ
> 年齢[c(2,4)]
[1] 46 76      #年齢の2,4番目を出して


#データフレームで好きなベクトルをみたいとき
> data$身長
[1] 165 147 163 158 173
> data[[3]]
[1] 165 147 163 158 173
#上2つは同じ意味(セクション1で実施)

#データフレームから好きな列を抜き出す
> data[2:3]
  年齢 身長
1   65  165
2   46  147
3   86  163
4   76  158
5   45  173
> data[c("年齢","身長")]  #cを使う!
  年齢 身長
1   65  165
2   46  147
3   86  163
4   76  158
5   45  173

シークエンス

> seq(3,10,2)  #seq(始まりの数,終わりの数,飛ばす数)
[1] 3 5 7 9
#10まででも当てはまるのは9まで。終わりの数が出てくるわけではない。

> length(seq(3,10,2))   #3から2つ飛ばしで10まで進むと該当する数字は何個ある?
[1] 4            #3、5、7、9の「4つ」

> a <- seq(1, 10, length.out = 20) #length.out使うと20当分する
> class(a)
[1] "numeric"
> a
 [1]  1.000000  1.473684  1.947368  2.421053  2.894737  3.368421  3.842105  4.315789
 [9]  4.789474  5.263158  5.736842  6.210526  6.684211  7.157895  7.631579  8.105263
[17]  8.578947  9.052632  9.526316 10.000000
#ちなみに左の[1][9][17]は1番目、9番目、17番目の意味。20個横に並びきれない時に一番左が何番目か教えてくれているだけ

整数にしたい!

> class(1)
[1] "numeric"  #数字。小数点もある
> class(1L)
[1] "integer"   #数字にLをつけると整数と見なされる
> 1-1L
[1] 0           #1-1=0という意味

ベクトル強制(因子を変える)

#  xに数字と文字を混ぜたベクトルを作る
> x <- c(1, 3, 5,"a")

> # xと打ってみると・・・
> x
[1] "1" "3" "5" "a"   #文字が混じると全部文字列として認識される

> # このベクトルのクラスを確認すると・・・
> class(x)
[1] "character"  #「文字列」という意味

#文字列を数字に変換
> x<- as.numeric(x)
 警告メッセージ: 
 強制変換により NA が生成されました  
> x
[1]  1  3  5 NA  #文字列の部分がNAに変わった

次は2.2になります。





この記事が気に入ったらサポートをしてみませんか?