製造系SEのメモ

普段気になった内容をメモしていきます

Rでデータのサンプリング

f:id:asakat:20190130204302j:plain

最近、初めてRを使ってサンプリングしたのでメモします。

テストデータ

以前使ったデータを使います。

> testdata
   gender blood.type age
1    male          B  26
2  female          A  43
3    male          B  23
4  female          A  48
5    male         AB  37
6    male          A  39
7    male          O  38
8    male          B  33
9  female          A  42
10   male         AB  33

この10行のデータのうち、半分(5行)を無作為に抽出します。

サンプリング

抽出対象の行番号を生成

サンプリングするにはsample()関数を利用します。

> sNum <- sample(1:nrow(testdata), nrow(testdata)/2)
> sNum
[1]  3 10  1  2  6

nrow()でデータの行数を取得可能なので、1~10の範囲:1:nrow(testdata)で、5つの整数:nrow(testdata)/2を無作為に発生させています。

データのサンプリング

サンプリング自体は1行で書けます。

> sampledata <- testdata[sNum,]
> sampledata
   gender blood.type age
3    male          B  23
10   male         AB  33
1    male          B  26
2  female          A  43
6    male          A  39

testdata[sNum,]で発生させた数字に対応する行番号のデータを抽出できます。



短いですが以上です。