R logo

データフレームから、subsetを使って、特定の行や列を抽出する方法。

今回は、下記データ(Data)を使用。

> print(Data)
    ID  Cohort  Sex Age ADNC    LBDSubtype
1   149 LBD     M   83  Low     BP
2   634 AD      M   78  High    DN
3   632 AD      F   75  High    BP
4   901 LBD     M   74  Not     TL
5   621 AD      F   78  High    BP
6   490 LBD+AD  M   74  High    DN
7   197 LBD+AD  F   83  Int     TL
8   351 LBD+AD  M   84  Int     DN
9   075 LBD     M   81  Low     TL
10  376 LBD+AD  F   75  Int     DN

行の抽出

特定の文字を含む行を抽出

例えば、”Sex"の列が”M”の行を抽出する場合、subset(データ, 列名 == "文字"という形で抽出する。

data_a <- subset(Data, Data$Sex == "M" )
data_a
output
    ID  Cohort  Sex Age ADNC    LBDSubtype
1   149 LBD     M   83  Low     BP
2   634 AD      M   78  High    DN
4   901 LBD     M   74  Not     TL
6   490 LBD+AD  M   74  High    DN
8   351 LBD+AD  M   84  Int     DN
9   075 LBD     M   81  Low     TL

特定の文字を含まない行を抽出

例えば、”Sex"の列が”M”の行以外を抽出する場合、subset(データ, 列名 != "文字"という形で抽出する。

data_b <- subset(Data, Data$Sex != "M" )
data_b
output
    ID  Cohort  Sex Age ADNC    LBDSubtype
3   632 AD      F   75  High    BP
5   621 AD      F   78  High    BP
7   197 LBD+AD  F   83  Int     TL
10  376 LBD+AD  F   75  Int     DN

複数の条件で行を抽出

subset()は、メタ文字が使える。

例えば、"Sex"が"M"で、”ADNC”が”Low”の行を抽出する場合、subset(データ, 列名1 == "条件1" & 列名2 == ”条件2”)という形で抽出する。

data_c <- subset(Data, Data$Sex == "M" & Data$ADNC == "Low" )
data_c
output
    ID  Cohort  Sex Age ADNC    LBDSubtype
1   149 LBD     M   83  Low BP
9   075 LBD     M   81  Low TL

列の抽出

列は、subset(データ, select = 列名)とする。

特定の文字を含む行を抽出

例えば、”Sex"の列を抽出する場合、subset(Data, select = "Sex")という形で抽出する。

data_a <- subset(Data, Data$Sex == "M" )
    data_a
    
output
    Sex
1   M
2   M
3   F
4   M
5   F
6   M
7   F
8   M
9   M
10  F

複数の列を抽出

例えば、"Sex""の列と、"Age"の列と、"ADNC”の列を抽出する場合、subset(データ, select = c("Sex", "Age", "ADNC"))という形で抽出する。

data_b <- subset(Data, select=c("Sex","Age","ADNC"))
data_b
output
    Sex Age ADNC
1   M   83  Low
2   M   78  High
3   F   75  High
4   M   74  Not
5   F   78  High
6   M   74  High
7   F   83  Int
8   M   84  Int
9   M   81  Low
10  F   75  Int

よく使用する演算子

subsetでよく使用する演算子を覚えてべし。

Rで使用するメタ文字

行選択のところで触れたメタ文字。

Rでよく使うものを書き留めておく。

メタ文字 意味
. 任意の一文字
* 直前のパターンを、0 回以上繰り返す
+ 直前のパターンを、1 回以上繰り返す
? 直前のパターンを、0 回または 1 回だけ繰り返す
{3,6} 前出パターンが、3回以上6回以下繰り返す。
( ) 複数の文字を一つのパターンとしてまとめる。
[ ] [ ] に囲まれた文字列のうちいずれかの1文字を表す。
^ 先頭。ただし、[ ] の中で使うと、「それ以外」を表す。
| "A"|"B"で、「AまたはB」のように使う。
$ ”データ$列名”という形でよく使う。
\ メタ文字の直前に置いて、そのメタ文字をエスケープする。
にほんブログ村 子育てブログ ワーキングマザー育児へ