数据摘要
反映集中程度的函数
下面是R中反映中程度的函数
- mean():均值
- median():中位数
- quantile():分位数
> a <- c(1,5,6,9,7,5,6,7,2,6)
> mean(a)
[1] 5.4
> median(a)
[1] 6
> quantile(a)
0% 25% 50% 75% 100%
1.00 5.00 6.00 6.75 9.00
反映数据分散程度的函数
下面是R中反映数据分散程度的函数
- range():极值
- var():反差
- sd():标准差
> a <- c(1,5,6,9,7,5,6,7,2,6)
> range(a)
[1] 1 9
> var(a)
[1] 5.6
> sd(a)
[1] 2.366432
数值摘要表
通过summary()
函数我们可以得到一张表,从这张表中我们可以直接得到数据的极值、分位数、中位数、均值。
> summary(a)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 5.00 6.00 5.40 6.75 9.00
缺失值
NA缺失值
在R语言中NA表示缺失值,也就是不存在的值,或者说未知的值。
任何值与NA计算结果都是NA
> 1+NA
[1] NA
> 1*NA
[1] NA
在如果我们想将NA排除在外,可以将函数中的na.rm属性设置为TRUE
> a <- c(NA,1:49)
> a
[1] NA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
[39] 38 39 40 41 42 43 44 45 46 47 48 49
> sum(a)
[1] NA
> mean(a)
[1] NA
> sum(a,na.rm = T)
[1] 1225
> mean(a,na.rm = T)
[1] 25
可以通用is.na
函数查找缺失的值
> is.na(a)
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[20] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[39] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我们可以通过complete.cases()
函数找到缺失的值
> a <- matrix(c(1:6,NA,8,9),nrow = 3)
> a
[,1] [,2] [,3]
[1,] 1 4 NA
[2,] 2 5 8
[3,] 3 6 9
> complete.cases(a)
[1] FALSE TRUE TRUE
> b <- c(1,6,NA)
> complete.cases(b)
[1] TRUE TRUE FALSE
可以通过下面的方式把缺失的行去除
> a[complete.cases(a)]
[1] 2 3 5 6 8 9
> a[complete.cases(a),]
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
还可以直接通过na.omit()
函数得到去除缺失值后的数据
> na.omit(a)
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
attr(,"na.action")
[1] 1
attr(,"class")
[1] "omit"
下面是R语言中缺失值的解决方法
其他缺失值
- 缺失数据NaN,代表不可能的值;
- Inf表示无穷,分为正无穷Inf和负无穷Inf,代表无穷大或者无穷小。
下面是上面两种缺失值与NA缺失值的区别:
- NA是存在的值,但是不知道是多少;
- NaN是不存在的;
- Inf存在,是无穷大,-Inf是无穷小,表示的是不可能的值。
下面就是典型的NaN和Inf值
> 1/0
[1] Inf
> -1/0
[1] -Inf
> 0/0
[1] NaN
我们可以用is.infinite
和is.nan
函数判断这两种缺失值
> is.infinite(1/0)
[1] TRUE
> is.nan(0/0)
[1] TRUE
缺失值填充
一般通过如下的步骤实现缺失值的填充:
- 计算相关性
- 构建回归模型(lm(y~x))
- 带入回归模型预测
数据标准化
数据分析时经常需要数据标准化处理,常见的比如:回归、主成分、因子分析等,在神经网络、聚类分析中也会经常用到数据标准化预处理,甚至感觉一切的数据分析好像都需要标准化预处理。
数据标准化的作用主要时消除变量间的量纲关系,从而使数据具有可比性。
最大-最小规范化(线性变换)
y = x − m i n ( x ) m a x ( x ) − m i n ( x ) y=\frac{x-min(x)}{max(x)-min(x)} y=