# 欠損値 NA: Not Available
#
# ベクトル c(44, NA, 5, NA)を変数x に代入してください。
x <- c(44, NA, 5, NA)
# 次に x を3倍してください。
# 答えは、次の通りです。合っていますか。
# ベクトルの要素にNAがあっても、エラーとならず演算しています。
## [1] 132 NA 15 NA
# 次に、標準正規分布(平均が0、分散が1)の乱数をrnorm( )により発生させます。
# まずは、rnorm( )がどんな数値を生成するか、rnorm(10)とrnom(20)を実行し確認してください。
rnorm(10)
## [1] -0.5760524 0.2413473 -0.7757820 1.1067921 -0.3828532 0.2109901
## [7] 1.0342797 -1.0696370 0.5018818 0.3552593
# もう一度。
rnorm(10)
## [1] 0.68695529 -0.14964597 -0.41850711 0.86449671 0.94616878
## [6] -0.23231752 -0.08713935 1.76476365 -1.22620130 -0.30573939
# 同じコマンドを実行しても、異なる乱数が発生します。これが乱数です。
# しかし、set.seed()を実行すると、同じ乱数を発生させることができます。
set.seed(111)
rnorm(10)
## [1] 0.2352207 -0.3307359 -0.3116238 -2.3023457 -0.1708760 0.1402782
## [7] -1.4974267 -1.0101884 -0.9484756 -0.4939622
rnorm(10)
## [1] -0.17367413 -0.40659878 1.84563626 0.39405411 0.79752850
## [6] -1.56666536 -0.08585101 -0.35913948 -1.19360897 0.36418674
set.seed(111)
rnorm(10)
## [1] 0.2352207 -0.3307359 -0.3116238 -2.3023457 -0.1708760 0.1402782
## [7] -1.4974267 -1.0101884 -0.9484756 -0.4939622
# 先ほどと同じ乱数が発生していることが確認できましたか。111の値を変えると異なる乱数が発生します。
# では、本題に戻ります。1000個の乱数を作り、yに代入してください。
# できましたか。
rnorm(10)
# 次に、z <- rep(NA, 1000)を実行してください。
z <- rep(NA, 1000)
# 次に、既に作っている y と Z を使って両者の中から100個の値をサンプリングし、その結果をmy_dataに代入しください。
my_data <- sample(c(y, z), 100)
# これは、yとzの中から、ランダムに任意の100個の値を抽出しています。
# 次に、is.na( )を使ってmy_dataをチェックし、その結果を my_na に代入してください。
# my_naを表示してください。
my_na
## [1] TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
## [12] FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE
## [23] FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
## [34] TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
## [45] FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE FALSE TRUE
## [56] FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE
## [67] FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE
## [78] FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE FALSE
## [89] TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE TRUE
## [100] FALSE
# さあ次に、my_na には何個のNAがあるかチェックしてみましょう。
# これはTRUEの数の合計になります。TRUEには1が割当られるので、my_naを合計するとTRUEの数、つまりNAの数が分かります。
# sum(my_na)を実行してください。
# この結果は、同じではありせん。なぜだか考えてください。
sum(my_na)
## [1] 43
# 最後に、my_data の具体的な内容を見てみましょう。
my_data
## [1] NA -1.29349098 0.05113670 0.41003794 -0.83295959
## [6] NA NA NA 1.22528658 -1.46826970
## [11] -1.59690189 -1.41787206 NA -0.81259634 0.32654924
## [16] 0.78194613 -0.61094662 NA NA 0.24783763
## [21] NA -1.17572604 -0.63601621 -1.23969852 0.23893444
## [26] NA -0.58981171 NA 0.90152220 -0.16314431
## [31] NA 0.41202913 -1.37039618 NA NA
## [36] NA NA NA -0.35777281 NA
## [41] 0.02115758 -0.79073938 -0.04159986 -3.20596922 -0.47640251
## [46] -0.02012394 2.62510863 NA NA 0.28818001
## [51] -0.25193829 -0.52302185 NA -0.22637939 NA
## [56] 0.44851364 -1.81120975 0.36418674 -0.66416202 NA
## [61] NA -0.38074476 -0.78695273 NA NA
## [66] NA 0.22641181 -0.83381364 NA NA
## [71] 0.38949993 0.57738415 NA NA 1.61088633
## [76] 0.37266454 1.99543597 -1.43569392 NA NA
## [81] NA NA -1.12121553 0.66147923 1.02319705
## [86] NA NA -0.72449495 NA 1.12528654
## [91] NA 0.91316326 NA NA NA
## [96] -0.90307988 -0.09959470 NA NA -1.32087143