トップ 一覧 検索 ヘルプ RSS ログイン 印刷

sample()の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!ベクトルから任意の数のサンプルを抽出する

ある数字の並び(ベクトル)を対象として、任意の数を標本として抽出したい場合、

 sample(ベクトル, 標本数)

という関数が使えます。

 > abc <- 1:100     ##abcというオブジェクトに、1から100までの整数ベクトルを定義。
 > sample(abc, 5)  ##ベクトルabcから、5個の標本を採る
 [1] 54 38 85  5 55
 > sample(abc, 15)  ##ベクトルabcから、15個の標本を採る
 [1] 53 44 30 34 10 87 35 47 45 84 76 77 16 55 49
 > sample(abc, 105)  ##ベクトルabcから、105個の標本(ベクトルの数より多い)を採る
 Error in sample.int(length(x), size, replace, prob) :   
 cannot take a sample larger than the population when 'replace = FALSE'  ##データ数より多いといって叱られる。

文字でも使えます。

 > xyz <- c("a","b","c","d","e")   ##xyzというオブジェクトに、a,b,c,d,eの文字列を定義
 > sample(xyz,3)  ##xyzから3個の標本を採る
 [1] "d" "a" "b"

!データフレームからサンプルを抽出する

sample()はベクトルを対象とした処理のみだが、拡張として、dplyrパッケージを使うと、slice_sample()旧sample_n()でデータフレームから任意のサンプルを抽出できる。

 library(dplyr)
 slice_sample(tbl = dataframe, size = samplesize)

!金額帯サンプリング

いわゆるMUS(monetary unit sampling)をしたい場合も対応している。

 sample(data, size = サンプル数, prob = 金額項目)

とすることで、金額項目に該当する数値でレコードをウェイト付したものをサンプルする。

:関連:
* slice_sample()