Rで任意の行や列を抽出する(tidyverseなし)

以下の表から、任意のデータを取り出す。

こんな計画行列のデータがあったとする。データの詳細はここを参照。ここからgroups列のaだけを抽出したい。なお、今回はデータの名前をdata1としている。

groupsvalues
a32.1
a29.5
a34.8
a31.6
a32.6
a34.1
a25.3
a31.4
a30.2
a30.8
a27.7
a32.2
a31.3
a30.0
a27.8
a32.9
a34.5
a34.2
a26.4
a32.7
b34.6
b34.9
b36.2
b34.3
b35.7
b35.8
b32.3
b32.8
b35.3
b33.8
b33.1
b33.3
b34.7
b35.0
b35.9
b33.5
b34.4
b35.2
b36.4
b35.1


  • 任意の行を取り出す。

コードは以下の通りとなる。データの名前はdata1としている。データの中の抜き出したい行数を指定する。1から20行目までがグループaのデータになるため、1:20として、抜き出したい行数を指定する。[]の中の , より左は行、右は列を指定することになる。今回は任意の行を抜き出したいので、 , より左側で行数を指定する。

data1[1:20, ]

出てくる結果は以下の通り。

   groups values
1       a   32.1
2       a   29.5
3       a   34.8
4       a   31.6
5       a   32.6
6       a   34.1
7       a   25.3
8       a   31.4
9       a   30.2
10      a   30.8
11      a   27.7
12      a   32.2
13      a   31.3
14      a   30.0
15      a   27.8
16      a   32.9
17      a   34.5
18      a   34.2
19      a   26.4
20      a   32.7


bの行を抽出したかったら、[]の中を21:40に指定すればよい。

行数を指定するのではなく、行の文字(aとかb)を指定して抽出する方法もある。コードは以下の通りだが、可読性があまり高くない。

今回はtidyverseパッケージを使用していないが、tidyverseの方がコードの可読性が高い。

data1[data1$groups == "a", ]


  • 任意の列を取り出す。

コードは以下の通りとなる。データの名前はdata1としている。データの中の抜き出したい列数を指定する。[]の中の , より右に列を指定することになる。もし、1から2列目までを指定したかったら1:2とする。2列目だけを抽出したければ、2とする。
1から2列目までを抽出するコードと結果は以下の通りとなる。

 data1[ ,1:2] #コード
   groups values # ここから結果
1       a   32.1
2       a   29.5
3       a   34.8
4       a   31.6
5       a   32.6
6       a   34.1
7       a   25.3
8       a   31.4
9       a   30.2
10      a   30.8
11      a   27.7
12      a   32.2
13      a   31.3
14      a   30.0
15      a   27.8
16      a   32.9
17      a   34.5
18      a   34.2
19      a   26.4
20      a   32.7
21      b   34.6
22      b   34.9
23      b   36.2
24      b   34.3
25      b   35.7
26      b   35.8
27      b   32.3
28      b   32.8
29      b   35.3
30      b   33.8
31      b   33.1
32      b   33.3
33      b   34.7
34      b   35.0
35      b   35.9
36      b   33.5
37      b   34.4
38      b   35.2
39      b   36.4
40      b   35.1

2列目だけを抽出するコードと結果は以下の通り。出てくる結果は以下の通り。
data1[ ,2] #ここはコードで下は結果
 [1] 32.1 29.5 34.8 31.6 32.6 34.1 25.3 31.4 30.2 30.8 27.7 32.2 31.3 30.0 27.8 32.9 34.5 34.2 26.4 32.7 34.6 34.9 36.2
[24] 34.3 35.7 35.8 32.3 32.8 35.3 33.8 33.1 33.3 34.7 35.0 35.9 33.5 34.4 35.2 36.4 35.1

  • 任意の行と列を取り出す。

こんどは行と列を組み合わせるだけ。たとえば、bグループの2列目だけを取り出す。bグループは21から40行目までになるので21:40と指定する。2列目は2と指定すればよい。コードと結果は以下の通り。

data1[21:40, 2] #ここはコードで下は結果
 [1] 34.6 34.9 36.2 34.3 35.7 35.8 32.3 32.8 35.3 33.8 33.1 33.3 34.7 35.0 35.9 33.5 34.4 35.2 36.4 35.1


コメント