いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【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関数で整数部分をとって来る。以下を参考にした。

www.cookbook-r.com

> 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"

 

おわり。