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について紹介しました。

主に概念的な説明をしましたが、「意外とできるかも?」という印象が少しでも持っていただければ幸いです。

これまでのブログでは「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検定はどうすればいいの・・・?」とイメージがつかないと思います。それを理解するためには「データフレーム」という考え方が必要になります。

次はデータフレームとベクトルの話をします。


このサイトを見ていただきありがとうございます。

MITTIといいます。

ここではこのページと自分の紹介を簡単にさせていただきます。



理学療法士をしています

回復期病棟で理学療法士をしています。メインは脳卒中です。

興味がある分野は「評価」です。


なぜ評価に興味があるのか?

現在理学療法には色々な治療技術があります。個人的にはどんな治療技術でもいいと思います。

どの治療技術にも学ぶべきところがあると思いますし、ボバースでも認知神経リハでもCIでもロボットでも別の治療を学ぶからこそ自分のやってきた技術を違う解釈で捉えられると思っています。

正直「言葉が違うだけで本質は同じことをしているんじゃないか?」と思うこともあります。

ただそこに共通言語がないだけで・・・

評価はその共通言語になりうると思います。そしてデータとなりこれからの理学療法の発展に寄与するのではないかと思っています。

●評価を使うことで現在の状態がわかる

●評価を使うことで治療効果が確認できる

●評価の組み合わせでクリニカルリーズニングができる

●評価を使うことで予測ができる


巨人の肩に乗る、車輪の再発明

「巨人の肩に乗る」や「車輪の再発明」という言葉があります。

先人たちの知恵を有効活用することは大切さを説明していますが、リハビリテーションではこれができているか考えることがあります。


経験を積むと「この患者はこうなるかも」という感覚があります。それを「評価」という言葉で説明できれば、後輩がそれを利用してくれればいいなと思います。




中間管理職をしています

自分が入職する前は電子カルテが導入されていなくて、数年して導入されました。

職場にExcelが強いスタッフがいなかったので、若手の頃から担当表やデータベースなど数多くのフォーマットを作ってきました。

Excelの相談ができる人もいなかったので全部独学でした。最近はマクロも使い始め「ボタン1つで今月入院した患者の評価ファイルを患者の人数分、しかも患者情報を自動入力して作成する」みたいなこともできるようになりました。

需要があればブログにExcelやマクロの記事も入れていこうと思っています。

(ただ素人なのできれいなコードなんてかけませんよ。泥臭くても動けばみんなハッピーなので)


また回復期ということもありいくつか他職種合同チームの立ち上げとかも経験しました。

理学療法の自分のチームのリーダーするより、他職種合同チームのリーダーをする方が得意だったりします。チームの目標が明確なので。



自分の強み

ストレングス・ファインダーの5つの強みは以下のとおりです。
  • 回復志向
  • 学習志向
  • 分析志向
  • 内省
  • 収集心

カリスマのようなリーダーではなく「メンバーを後方から支えながら次のステップへ導くリーダー」が自分にあっています。そしてデータを集め分析し学ぶのは自分の得意なスタイルです(苦に感じないという意味で)。


「評価に興味があるのも」分析志向と収集心が影響しているのかもしれません。


広告の配信について

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」「Amazonアソシエイト」を利用しています。

広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。

Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはここをクリックしてください。


まとめ

簡単に自己紹介をさせていただきました。

これからもマイペースで進んでいきたいと思います。




↑このページのトップヘ