0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rでデータハンドリング】解析前に行う基本的なハンドリングの紹介1

Last updated at Posted at 2019-04-30

解析前には研究データを解析出来るように加工する機会が多くあります。
その中でも最低限使えると助かる技術を紹介します。

以下紹介するハンドリング技術は主にrmsパッケージを使用していますので、
ご覧頂く前にrmsパッケージをインストールしてlibrary(rms)まで実行を済ませてください。

このページで紹介するハンドリング

・変数名を変える(rename)
・変数ラベルを付与する(label)
・変数をデータフレームに残す(keep)
・変数をデータフレームから削除する(drop)
・データを並べ替える(sort)
・グループの最初/最後の行を取得する(first/last)

「文字列操作」、「2つのデータの結合」、「縦→横、横→縦変換」については別ページで紹介します。

データについて

今回は次のようなデータを取り扱うことにします。

id arm age sex_c sex_n bmi ha1c0 sbp0 asa0
1 コントロール 79 男性 1 26.12 11.0 134 1
2 介入 61 男性 1 39.48 10.8 188 1
3 コントロール 64 女性 0 26.11 14.1 141 0
4 コントロール 47 男性 1 31.17 8.0 136 0
5 コントロール 47 男性 1 27.61 8.1 164 0

このデータを読み込むためのサンプルコードはこちらになります。
詳しくは、こちらを参照ください。
【Rでデータハンドリング】RコードでDropboxのCSVファイルを直接読み込む
https://qiita.com/ishihara_airport/private/907b1fb9ae118ddacfb0

library(dplyr)
data <-
  "https://www.dropbox.com/s/rc1j53415f2l06r/DMRCT180_sum.csv?raw=1" %>%
  url %>%
  read.csv(na.strings = c("", "#VALUE!")) 

upData関数の基本

upData関数の基本ですが、第一引数には操作するデータ名を記載します。
いまは、dataというデータを操作して、newdataという新しいデータを作ります。
第二引数以降は、データの操作を記載していきます。データの操作は、「,(カンマ)」で区切って複数書くことができます。

newdata = upData(data,
              #第二引数以降はデータの操作を記載)

この基本を押さえた上でデータハンドリングを身につけましょう。

変数名を変える(rename)

rmsupData関数を使います。

newdata = upData(data,
              rename=list(id  ="ID", #元の名前=新たな名前
                          sex_c  = "gender_c"))

変数ラベルを付与する(label)

sex_nにラベルをつけたsex_lという変数を作ります。

newdata = upData(data,
              sex_l = factor(sex_n,levels=c("0", "1"), labels=c("女", "男"))
)

levels=には元の変数のカテゴリを、labels=にはつけるラベルを順に記載します。

変数をデータフレームに残す(keep)

この操作では、upData関数は使わず、subset関数を使います。

newdata = subset(data, select = c(id,age,sex_n,ha1c0))

select =の後に残したい変数を書きましょう。

変数をデータフレームから削除する(drop)

newdata = upData(data,drop = c("sbp0"))

upData内でdrop =の後に削除したい変数を書きましょう。

データを並べ替える(sort)

dplyrパッケージを使う方法が簡潔で応用も効かせやすいので、こちらを紹介します。

library(dplyr)
newdata =
  data %>%
  arrange(arm,id)

arrengeの中に並べ替えたい順に記載します。
arm,idの順で記載すると、まず、armで並び替えた中でid順に並び替えてくれます。

グループの最初/最後の行を取得する(first/last)

dplyrパッケージを使います。
今回グループはarmとして、その中で最初の行を取得します。

また最初や最後の行を取得するときには、並び替え(sort)も同時に行うということをクセ付けるようにしましょう。

library(dplyr)
newdata =
  data %>%
  arrange(arm,id) %>%
  group_by(arm) %>%
  filter(row_number()==1)

まずは並び替えるためにarrangeを使ってarm内をid順に並び替えます。
次に今回のグループはarmですので、group_byarmのグループ指定をします。

この2つの処理をした後に、filter(row_number()==1)で最初の行に絞り込みます。row_number()==はグループ内で連番をつけてくれているとイメージしましょう。これを覚えておくと、2番目をとってくることもできますし、最後の行のコードもイメージしやすくなります。

グループ内の最後の行を取得するコードは下記になります。

library(dplyr)
newdata =
  data %>%
  group_by(arm) %>%
  arrange(arm,id) %>%
  filter(row_number()==n())

row_number()==n()という部分が変化しただけです。

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?