【R】数値データを作りたい
・お題:いろいろやってみたいときに、イメージするサンプルデータをテキパキ作れるとたぶん便利。数値データを作ってみたい。
・好きに数値を入力したい。
> c(1,3,6,10)
[1] 1 3 6 10
・決まった数値を反復させたいときは、repを使う。例えば、1,2,3,1,2,3......。
> rep(c(1,2,3),4)
[1] 1 2 3 1 2 3 1 2 3 1 2 3
・整数の数列を作りたい。とりあえず公差1にしてみる。
> 1:3
[1] 1 2 3
> -2:3
[1] -2 -1 0 1 2 3
・seqの方がいろいろ出来る。とりあえず1:3と同じ出力を得る。
> seq(1,3)
[1] 1 2 3
> seq(3)#引数を一つ与えると、1スタートと補完してくれるっぽい。
[1] 1 2 3
> seq(-3)
[1] 1 0 -1 -2 -3
・公差を設定することもできる。引数byで与えても良いけれど、3つ目の引数はbyと認識されるっぽい。
> seq(1,10,4)
[1] 1 5 9
・頭とお尻の数字を与えて、指定した数に等分した数列を作ることもできる。
> seq(1,3,length.out = 6)
[1] 1.0 1.4 1.8 2.2 2.6 3.0
・正規分布は、rnorm関数で作れる。rnorm(n, mean=0, sd=1)になっている。 mean, sdで引数を与えなければデフォルト値が入る。
> rnorm(5)
[1] 0.8650296 -0.1450649 -0.8796355 0.4933396 0.2900694
> rnorm(5,100,10)
[1] 83.18139 96.50756 105.12812 92.33844 121.68040
・一様分布は、runif関数で作れる。runif(n, min=0, max=1)になっている。
> runif(5)
[1] 0.4452530 0.3242887 0.6594712 0.6731198 0.3186764
・整数ばかりにしたい場合、生成した乱数の整数部分をとって来るのが一番素直。floor関数で整数部分をとって来る。以下を参考にした。
> floor(rnorm(5,100,10))
[1] 100 101 114 110 108
・一様分布なら、数列全体を作成してからsample関数でピックアップするやり方もある。
> sample(1:10, 5, replace=TRUE)#復元抽出。同じものが出てきちゃうかも。
[1] 4 3 4 6 6
> sample(1:10, 5, replace=FALSE)#非復元抽出。同じものは出てこない筈。
[1] 8 3 5 7 6
・余談だけれど、sampleでランダムデータを作成するのは、数値データ以外のサンプルデータを作るのにも使える。
> sample(c("a","b","c","d","e","f","g"), 5, replace=FALSE)
[1] "c" "a" "b" "f" "g"
> sample(c("Male","Female"), 5, replace=TRUE)
[1] "Male" "Female" "Female" "Male" "Female"
おわり。