Missing Values
缺失值在统计和数据分析中起着重要作用。通常,不能忽略数据中存在的缺失值,而应该仔细研究它们,看是其否存在造成这些缺失值的潜在模式或原因。
在R中用NA
表示任意值是'not available' or 'missing' (in the statistical sense)。NA
不是一个真实的值,就仅仅是一个占位符,故其它数和它进行算术运算、做比较等,也不会得到真实的值,只会返回NA
> NA + 2
[1] NA
> NA > 2
[1] NA
> c(1,2,NA,4,5,NA) + 4
[1] 5 6 NA 8 9 NA
> c(1,2,NA,4,5,NA) * 4
[1] 4 8 NA 16 20 NA
> c(1,2,NA,4,5,NA) < 4
[1] TRUE TRUE NA FALSE FALSE NA
可以通过调用is.na()
来判断向量中的元素是否为NA
> vc = c(1,NA,2,NA,3)
> is.na(vc)
[1] FALSE TRUE FALSE TRUE FALSE
==
可以用来判断两个值是否一样,那么NA
和NA
进行判断,是否返回TRUE
呢?答案为否,前面说到,NA
不是一个实际值,两个NA
也是无法比较的。
> 5 == 5
[1] TRUE
> NA == NA
[1] NA
> c(1,NA,2,NA,3) == NA
[1] NA NA NA NA NA
还有一中类型missing value:NaN
用来表示'not a number'。Inf
表示无穷大'infinity'。可以用函数is.nan()
来判断是否是NaN
> 0 / 0
[1] NaN
> Inf - Inf
[1] NaN
> is.nan(0/0)
[1] TRUE
其它的函数介绍
sum()
函数可以将函数的传入参数进行求和。比如:
> my_data <- c(1,2,3)
> sum(my_data)
[1] 6
前面提到NA
和其它值进行算术计算结果也是返回NA
。那如果sum()
传入的参数中有NA
值,是不是最终结果返回NA
呢。
> sum(c(1,NA,2,NA,3))
[1] NA
对的,结果是返回NA
。但sum()
提供了一个参数'na.rm' 可以用来忽略数据中的missing value(NA
, NaN
)。T
是TRUE
的缩写
> sum(c(1,NA,2,NaN,3), na.rm = T)
[1] 6
rnorm()
可以用来随机生成一组正太分布数据。默认是标准正太分布,可以根据参数改变。
> y <- rnorm(10)
> y
[1] -1.07976839 0.57909316 0.76848483 1.31997079 0.76564674 1.67086863
[7] 0.05381471 1.30779954 -2.03273843 -0.13120774
> args(rnorm)
function (n, mean = 0, sd = 1)
NULL
sample()
函数用于抽样。参数'x'是总体,'size'设置需要抽取的数量,'replace'是否放回原处,'prob'设置每个元素抽到的概率。
> sample(1:10, 4)
[1] 7 9 6 4
> args(sample)
function (x, size, replace = FALSE, prob = NULL)