カテゴリ: 統計

Rを使っていく上でパッケージを利用する場面は多くあります。

今回はパッケージのインストールの仕方について紹介します。

インストールはRStudioで行う場合とコードを書く方法があります。


パッケージについて

統計ソフトRで何ができるか説明してみるでも説明しましたが、私はRは「Rは統計に強いスマホみたいなもの」と説明しています。

スクリーンショット 2018-12-12 23.49.06

スマホではアプリを追加して色々な機能が追加できるように、Rではパッケージを入れることで色々な機能が追加できます。

今回はtable1の作成に強いtableoneパッケージをインストールしてみます。


パッケージのインストールと呼び出し

RStudioの場合
スクリーンショット 2019-01-29 7.20.19


RStudioでは画面右下のpackagesに既にインストールされているライブラリの一覧があります。
(最初からいっぱい入ってる!)

あまりにも数が多いですが、右上の虫眼鏡で検索することもできます。

ただインストールされているだけでは使うことができません。チェックを入れることではじめて使えるようになります

また一覧に使いたいパッケージ名がない場合は上のinstallでパッケージ名を入れるとインストールできます。その後チェックを入れると使うことができるようになります。

ちなみにインストールは1回行えば基本2度目を行う必要はありません。

ただRStudioを起動し直したりプロジェクトを変更するたびにチェックは外れるので付け直します。


Rで直接コードを書く場合

Rでコードを書く場合は以下のようになります。
今回使うパッケージはtableoneです。

library() 

RStudioで「チェックを入れる」に該当するのがlibrary関数です。
()の中にはパッケージ名が入ります。" "で囲む必要はありません。

スクリーンショット 2019-01-29 7.45.51


最初はRStudioでチェックを入れるだけでできてしまうので直接コードを書くことは少ないのですが、慣れてくると予測変換があるのでコードを打つほうが早くなります。


install.packages()

まだパッケージがインストールされていない場合はinstall.packages関数を使います。

スクリーンショット 2019-01-29 12.20.51

" "の中にパッケージ名を入れます。dependencies = TRUEはおまじないみたいなものと思っても大丈夫です。

(このパッケージの依存関係にあるパッケージをインストールします)

インストールは1回行えば基本2度目を行う必要はありません。あとは起動後やプロジェクトを変えるたびにlibraryで呼び出すだけです。


パッケージの使い方

それぞれのパッケージにはそれぞれの関数があります。

ここではtable1を作成するCreateTableOne関数を呼び出すとします。

スクリーンショット 2019-01-29 13.06.57

パッケージの関数を使う時は直接関数名を打ち込んで問題ないのですが、あえて「このパッケージを使います!」とtableone::CreateTableOne(〜〜〜〜〜)と関数名を宣言することもできます。

普通に個人で使う場合は上の前者の方法で十分だと思います。


まとめ

今回はパッケージの呼び出し方について解説しました。

具体的なパッケージや関数は必要に応じて紹介していきます。


次回はいよいよデータを扱っていくための基本操作を紹介します。
まずは変数について紹介します。



全ての記事一覧はこちらです。

前回、医療統計でよく使われるdata.frameについて説明しました。

医療統計をRで使うために必要な「データフレーム」にの考え方ついて : 独学で始める統計×データサイエンス



記事でも紹介しましたが、data.frameはベクトルの集合体とも言えます。

スクリーンショット 2018-08-29 19.54.22

各列には「氏名(文字)、年齢(数値)、性別(男性/女性の2カテゴリー)」など色々な種類のデータが入っています。Rで統計を行うときにはこのデータの型を理解する必要があります。

今回はデータの型について説明します。




医療統計で使われる代表的な型

スクリーンショット 2019-01-25 3.04.20


numeric(実数)

例)
  • 身長
  • 体重
  • 歩行速度
  • 年齢
numericは数字のことです。numericの特徴としては四則演算(+,-,×,÷)ができます。
また1と2の間隔と2と3の間隔は同じです。

またnumericには小数点以下がある実数(double)と整数(integer)でも使えます。


character(文字)

例)
  • 氏名
  • 文字
  • "1"
文字にあたるものはcharacterとなります。数字でも"1"のように""で挟むとcharacterとして認識されます。
スクリーンショット 2019-01-25 3.21.40
上記ではaは文字で1は数字なので「計算できません」とエラーが出ます。

スクリーンショット 2019-01-25 3.24.09
上記ではaに1という文字を入れたのでやはり計算できません。



factor / order

例)
  • 男性/女性
  • 右/左
  • 年齢(10代,20代〜)
  • 1:不満足/2:やや満足/3:満足
  • 数値で分類している場合(0:非自立,1:自立)
factor /order型はグループ分けしている時に使います。「1:不満足」を2倍をしても「2:やや満足」にならず四則演算ができないのも特徴です。

factorは性別など順序がないものに使われ、orderは順番があるもの(10代〜、5段階評価など)に使われます。


logical

スクリーンショット 2019-01-25 14.56.28

logicalの代表的なものにTRUE とFALSEがあります。
年齢 < 60 とすることで、60未満をTRUE、それ以外をFALSEとなります。
TRUEは1、FALSEは0とみなすことができ、sum関数でTRUEの合計を、mean関数で割合(ここでは2/5=0.4)を出すことができます。

TRUE/FALSE以外にもExcelのセルが空欄の時に表示されるNULLがあります。



0とNULLの違いはこのツイートが最強です。



class()とstr()

ではどうやって型を確認すればいいのでしょうか?これはclass関数やstr関数を使います。


class()

スクリーンショット 2019-01-25 3.31.53

上記のようにclass(変数名)とします。

aとbは同じ1でも型が違うのがわかります。



str()

上記でも紹介しましたが、data.frameはベクトルの集合体とも言えます。

スクリーンショット 2018-08-29 19.54.22

各列には「氏名(文字)、年齢(数値)、性別(男性/女性の2カテゴリー)」など色々な種類のデータが入っています。Rで統計を行うときにはこのデータの型を理解する必要があります。

str関数は各列(ベクトル)の型をまとめて調べることができます。

スクリーンショット 2019-01-25 14.45.20

右上の表をdataという変数名に入れています。

赤枠で囲ったところに型があります。

性別を見るとfactorで"女性"と"男性"の2カテゴリーであることがわかります。



型を変更するas.〜関数

型を変えるにはas.〜関数を使います。

as.character()

先程のstr(data)の氏名を見ると型はfactorになっています。これをcharacterに変えてみます。

コード
スクリーンショット 2019-01-25 19.28.57

結果
スクリーンショット 2019-01-25 19.29.10

data$氏名がわかりにくかったら医療統計をRで使うために必要な「データフレーム」にの考え方ついてを参照してください。

単にas.character(data$氏名)とするだけでは不十分です。

data$氏名 <- as.character(data$氏名)とすることでas.character(data$氏名)をdata$氏名に入れてね!という意味になります。


もしdata$氏名 <− を入れなかったら・・・
スクリーンショット 2019-01-25 19.48.13

結果
スクリーンショット 2019-01-25 19.52.56
data$氏名 <− を入れないと最後の結果が更新されていません。

つまりas.character(data$氏名)だけだとdata$氏名をcharacterにした結果を出してまでの意味しかないので注意してください。



as.numeric()

数値に変える時はas.numericを使います。

コード
スクリーンショット 2019-01-25 19.42.28

結果
スクリーンショット 2019-01-25 19.41.32


もし整数にしたい時はas.integerを使います。小数点切り捨てです。
スクリーンショット 2019-01-25 20.47.18

スクリーンショット 2019-01-25 20.47.36



as.factor / factor / ordered

factor型に変更するにはas.factor、factor、orderedなどを使います。


スクリーンショット 2019-01-25 23.06.24

dataに歩行という列を追加しています。
ここでは0:非自立、1:監視、2:自立としています。


スクリーンショット 2019-01-25 23.11.11

スクリーンショット 2019-01-25 23.10.53

最初はnumericと数値でしたが、as.factor関数を使うことでfactorに変わっています。
ここではclassではなくstr(data$歩行)で型を確認しています。

strを使うと型がfactorということだけでなく、levelsを見ると0,1,2の3つのカテゴリーがあることもわかります。

ただ0,1,2のままではグラフなどが困ります。その時はfactor関数(as.factorではないです)のlabelsを使うことでデータは0,1,2のまま表記を変えることができます。

スクリーンショット 2019-01-25 23.55.20

スクリーンショット 2019-01-25 23.55.11


スクリーンショット 2019-01-26 0.03.06


ちなみにfactorの順番はアルファベット順になってます。
0,1,2などは問題ないのですが、大,中,小などでは小→大→中など望ましくない順番になることがあります。性別は女性→男性となっています。

factorの並び順を変更するにはfactor関数のlevelsを使います。

スクリーンショット 2019-01-26 0.08.33

スクリーンショット 2019-01-26 0.09.27

スクリーンショット 2019-01-26 0.10.33



また並び順に意味がある場合はordered = TRUEを付け加えます。


スクリーンショット 2019-01-26 0.49.54

スクリーンショット 2019-01-26 0.50.41



EZRだと?

スクリーンショット 2019-01-26 1.17.11

EZRではアクティブデータセット→変数の操作にあたります。
赤枠の「データセット内の変数を一覧する」はstr()を使っているだけです。


まとめ

今回は型について説明を行いました。

型はRを使う上で非常に重要な考え方ですのでstr関数など使いながら確認する習慣をつけてみてください。


次回は医療統計を行う上で必要になるtable1を作ることができるtableoneパッケージについて紹介します。
 


全ての記事一覧はこちらです。
 



Rで医療統計を行う場合ExcelでデータをとりRで読み込んで使うといった方法がほとんどだと思います。

EZRやRコマンダーで統計を行うときは気にしなくてもいいのですが、RやRStudioで統計を行うときは「ベクトル」や「データフレーム(data.frame)」といった知識があると理解が進みやすいです。

今回はdata.frameとベクトルについて解説していきます。


data.frameとは?

スクリーンショット 2019-01-16 21.03.13


簡単にいうとExcelの表みたいな形式です。行(横)×列(縦)の形式になっています。

スクリーンショット 2019-01-15 2.05.16
EZRやRコマンダーを使う方はエクセルのデータを読み込んでいると思いますが、これがdata.frameになります。


data.frameのお約束

縦の列に変数名

縦の列に変数名を入れることです。基本逆にはしません。


一番上は変数名にする

一番上が変数名になるのでそれぞれ違う名前にしましょう。空欄もないように。
また変数名が2段にならないようにしましょう。


変数名に「空白」を使わない

Rでは変数名に空欄があると読み込めなかったりするので「 _ 」などを使う方がエラーが出にくいです。
「 ー 」もマイナスの記号と間違われる可能性があります。


Excelのセルは絶対に結合しない!

一番上の変数名も含めてどの部分でも結合はしないようにしましょう!

スクリーンショット 2019-01-16 23.55.25


エクセルに「平均」「標準偏差」を計算しない

Rで簡単に求められます。またエクセルには実データだけ入れないと、Rに集計の行が入り逆にRでの集計が正しくできません。


ベクトルとは?

スクリーンショット 2019-01-17 23.20.12


上記のように1つのベクトルには複数のデータが入っています。

ベクトルを使うときはc()を使います。

年齢 <- c(65, 46, 86, 76, 45)
性別 <- c("男性", "女性", "女性", "男性", "女性")


となっていれば上のエクセルみたいなものだとイメージします。
ちなみに文字として認識させるには" "が必要です。


そしてdata.frameはベクトルの集合体とも言えます。

スクリーンショット 2018-08-29 19.54.22

データフレームをエクセルでなくRで作るときは

①それぞれの列(ベクトル)をつくる。

②data.frame関数でくっつける


といった方法で作成することができます(それぞれのデータの数は同じににしましょう)。
氏名 <- c("山田", "鈴木", "吉田", "田中", "山口")
年齢 <- c(65, 46, 86, 76, 45)
身長 <- c(165, 147, 163, 158, 173)
体重 <- c(48, 50, 62, 64, 67)
性別 <- c("男性", "女性", "女性", "男性", "女性")
data <- data.frame(氏名, 年齢, 身長, 体重, 性別)
data

> data 氏名 年齢 身長 体重 1 山田 65 165 48 2 鈴木 46 147 50 3 吉田 86 163 62 4 田中 76 158 64 5 山口 45 173 67




$と[[ ]]について

では「data.frameの年齢」を取り出すにはどうすれば良いのでしょうか?

これは$または[[ ]]を使います。二重括弧です。

スクリーンショット 2019-01-18 0.51.35

RStudioだと、data.frameの変数に$をつけると変数名が出ます(すごく便利!)。

スクリーンショット 2019-01-18 0.55.32

またdata.frameの変数に[[1]]を入れると「1列目」という意味になります。


dataの中身が以下だったとします。
氏名 年齢 身長 体重 1 山田 65 165 48 2 鈴木 46 147 50 3 吉田 86 163 62 4 田中 76 158 64 5 山口 45 173 67


data$年齢 data[[2]]

> data$年齢 [1] 65 46 86 76 45 > data[[2]] [1] 65 46 86 76 45
同じ結果が出ます。



data.frameと医療統計

Rで医療統計を行う場合はdata.frameの形になっていることがほとんどです。次はこれがどう医療統計とつながるかをみていきます。

平均を出す場合

スクリーンショット 2019-01-18 1.15.12


t検定を使う場合

スクリーンショット 2019-01-18 1.06.20


相関係数を見る場合

スクリーンショット 2019-01-18 1.06.27


具体的な検定は今後紹介していきますが、今回はRで統計をかける場合は縦の列が重要になることがイメージできれば良いかと思います。




data.frameでよく使う関数

data.frameを使うときの代表的な関数を紹介します。

head()

head()はdata.frameの最初の数行を表示してくれます。


str()

str()は各列の型やデータの一部を一覧で教えてくれます。
型に関しては今後説明していきます。

names()

names()は列の名前(変数名)を一覧で出してくれます。
変数名なんだっけ?


dplyr::mutate()

mutate()は新たな変数を作るったり、既存の列を更新することができます。
たとえばFIMの各項目から合計点を出したり、FIM6点以上を"自立"にする、年齢を10代,20代とグループ分けするなんてこともできます。

dplyr::filter()

filterはdata.frameの中から条件にあった行だけを取り出します。
たとえば男性だけのデータを抜き出すことができます。

dplyr::select()

select()はdata.frameの中から選んだ列だけを取り出します。
たとえばdata.frameの列が多すぎる時に分析に使う列だけ取り出したりできます。


dplyr::group_by()

group_by関数はグループ分けをします。たとえばデータを性別毎に分けることができます。


dplyr::summarise()

summarise関数はグループ毎の平均や標準偏差をまとめて出すことができます。



ちなみにdplyr::というのはdplyrというパッケージを使うという意味なのですが、パッケージも今後紹介していきます。パッケージというのはRの機能を拡張してくれます。


何が言いたいかというとExcelで基本となるデータを1つ作ることができたら、Rの中でデータの加工したり、グループ分けしたり、集計・統計ができるということです。そのためエクセルのファイルを分析ごとにコピーしたりせずに済みます!コピーしすぎて「元データどれだ・・・?」となったりしません。


まとめ

今回はdata.frameについて紹介しました。

data.farameはRを使う上で必ず必要になり、第2章以降のデータはほぼ全てがdata.frameを使っています。
まだ使い方になれないと思いますが、記事を読み進めながら徐々に理解を深めていただければと思います。


次回もRを使う上で非常に大切な考え方である型について紹介します。



全ての記事一覧はこちらです。
 






これまでのブログでは「Rで何ができるか?」や「Rを使うためのソフトの紹介」を行ってきました。

この記事ではRの基本的な使い方を紹介していきます。

Rはプログラミング言語になるのですが、医療従事者でプログラミングをしている方は多くはないと思います。今回はプログラミング言語を勉強したことが無い方でもイメージできるように説明していきたいと思います。

また、このブログは「プログラミング未経験でも最短で基本的な医療統計が使える」ことを前提に説明するつもりです。そのためかなりざっくりとした表現にして、徐々に枝葉を伸ばそうと思っています。

今回は「変数」について説明します。


「変数」の使い方を知る 


スクリーンショット 2019-01-14 1.05.53
プログラミングでは「変数」というものを使います。
とりあえずというのは「名前がついているなんでも入るバッグ」みたいなものです。


スクリーンショット 2019-01-14 0.51.04

具体的には上記のように表記します。

これは1をaという変数に入れるという意味になります。ベクトルと言うこともあるらしいですが雰囲気を掴んでください。

ちなみに<ーの表記は不等号の"<"とマイナスの"ー"をくっつけたものです(必ず半角英数で!)。
他の言語では=を使ったりするらしいですが"<ー"はR独特なようです。

スクリーンショット 2019-01-14 0.59.15

変数には数字だけでなく、文字やExcelの表全体、Excelの列、関数(t検定の結果など)、グラフなど何でも入れることができます。

よく本や他のサイトでExcelの表など入れるときは"dat"や"Dataset"のような名前をつけていることが多いですが自分の好きな名前をつけても大丈夫です。ちなみに大文字と小文字を区別するので注意してください。

既にEZRやRコマンダーを使っている方はお気づきかもしれませんがExcelデータを取り込むときの画面がありますよね。その画面でDatasetとなっているものがありませんか?それは「Datasetという変数名に表を入れている」わけです。

スクリーンショット 2019-01-14 2.13.21



変数を使った計算

スクリーンショット 2019-01-14 1.30.30

スクリーンショット 2019-01-14 1.34.13


上の概念図を実際にRで書いたものが下になります。
  1. 左上のスクリプトにコードを書く
  2. 1行目を選択して順番にRunを押す(Runは選択している行のみを実行)
  3. 下に結果が出る
オレンジで書かれているのは「このプログラムを実行しました!」という意味です。
a <- 1 :1をaに入れました!
b <- 2 :2をbに入れました!
a + b  :a + bをします!

[1] 3
a <- 100 :100をaに入れました!
a + b   :a + bをします!
[1] 102

なんだか自衛隊とか船の操縦で何度も呼称している姿をイメージしてしまいます。


aに100を入れ直したので2回目のa + bは102になっています。
右上にはaとbに現在何が入っているのか一覧があります。
aに100を入れる前と入れたあとでaの値が変わることを確認してください。


問題

a <- 5
a <- a +1
a

答えは下にスクロール


























> a <- 5   :5をaに入れました!
> a <- a + 1  :a(この場合は5) +1したものをaに入れました!
> a     :aを表示します!
[1] 6
なんだか慣れない表現ではありますがよく使います。


まとめ

今回はRの「変数」について説明しました。でもこれだけでは「じゃあt検定はどうすればいいの・・・?」とイメージがつかないと思います。それを理解するためには「データフレーム」という考え方が必要になります。

次は医療統計やデータ分析を行う上で必ず必要になるデータフレームとベクトルの話をします。



すべての記事一覧はこちらになります。

RStudioには「プロジェクト」という機能があります。

プロジェクトを使うとファイルやデータの整理が行いやすくなります。

プロジェクトに慣れると「もしかしたらEZRなどのRコマンダーよりも使いやすいかも」と思うかもしれません。

今回はプロジェクトの初心者向けの使い方を紹介します。


プロジェクトを作ってみる

File → New Projectを選ぶ
スクリーンショット 2018-12-24 17.50.53


New Directoryを選択
スクリーンショット 2018-12-24 17.51.11


New Projectを選択
スクリーンショット 2018-12-24 17.51.18


プロジェクトの名前と保存先のフォルダを選択
スクリーンショット 2018-12-24 17.51.26



完成
スクリーンショット 2018-12-24 17.51.37



何をしたのか?


上記画面をよく見るとプロジェクトの名前でフォルダが作られています。確かに先はどの画面ではフォルダ名と場所を指定したようです。


メリット

プロジェクトを作ると1つのプロジェクトには1つのフォルダという習慣がつくようになります。すると以下のようなメリットがでてきます。

  1. スクリプト(プログラム)が保存しやすく、途中でやめても再開しやすい
  2. スクリプトをタブで複数管理できる
  3. 分析で使うExcelのファイルが簡単に確認・編集できる
  4. 結果(表やグラフの画像)を保存する時、自動的にこのフォルダに保存される

1.スクリプト(プログラム)が保存しやすく、途中でやめても再開しやすい

EZRなどのRコマンダーを使う方は作業を途中で中断する場合はどうするでしょうか。スクリプトを保存するという方もいると思いますが、Rに慣れていないと「もう一回最初からやり直す」という方が多いのではないでしょうか。また仮説検証的研究であれば目的の統計以外行うことはないですが、対数変換やグラフの作成、もしくは仮設探索的研究であればRを使ったいろいろな作業があります。

Rコマンダーで1からやり直すとなると途中で止められないですし、翌年に研究を行う時「あれっ、前どうしたっけ・・・?」となりやすいです。

RStudioでプログラムを作るようになると作業や分析の過程が残るので途中で中断することもできます。



2.スクリプトをタブで複数管理できる

スクリーンショット 2018-12-25 9.42.19
1つのスクリプトに全部のプログラムを入れるとすごく長くなってしまいます。1つのプロジェクトに複数のスクリプトやR Markdownが保存できるので以下のような使い方ができます。

  • 勉強しているRの本でプロジェクトを作り、章毎にスクリプトをつくる
  • 『試し』ファイルに色々作ったグラフや統計を残し、実際の研究で使う分だけを『本番』にコピペしておく
  • 『Markdown』で直接WordやPowerPointのファイルを作ってしまう

Rコマンダーはスクリプトを使い分けるのは得意ではない印象を受けます。



3.分析で使うExcelのファイルが簡単に確認・編集できる

プロジェクトのフォルダにExcelのデータを入れておくと非常に便利です。いちいち他の画面に変えなくてもExcelを開くことができるので、その場でファイルの確認や操作が行なえます。

スクリーンショット 2018-12-25 11.13.28


Rにエクセルファイルを読み込ませる時も「Import Dataset」を選ぶと簡単にできます。

スクリーンショット 2018-12-25 11.08.31

スクリーンショット 2018-12-25 11.24.01

Rの中で使う名前を決め、複数シートがあったり選択範囲が必要な場合は選択すればすぐに取り込めます。


4.結果(表やグラフの画像)を保存する時、自動的にこのフォルダに保存される

グラフを保存する時もプロジェクトで行っていると便利です。

スクリーンショット 2018-12-25 11.38.37
Save as Imageを選択



スクリーンショット 2018-12-25 11.38.50

ファイル名と画像のサイズを決める



スクリーンショット 2018-12-25 11.38.58

完成したファイルは特に設定を変えなければプロジェクトのフォルダに保存されるので、他の研究のファイルと混ざることもありません。



まとめ

今回はプロジェクトの基本的な使い方を説明しました。もっと使える人はgitでプロジェクトの管理を行うなど色々なことができるかもしれませんが、研究で医療統計を使ったりRの勉強を行う程度であればこのような使い方でも十分ではないかなと思います。

RStudioを使う場合はぜひプロジェクトも活用してみてください!

次はRを使うのに必要なパッケージについて紹介します。



全ての記事一覧はこちらになります。



↑このページのトップヘ