R语言入门:因子的使用

在R语言当中有因子这个特殊的数据结构,和别的编程语言不一样,这个数据结构的主要目的是用来分类,计算频数和频率,在后期将R语言用于统计学当中将会十分受用。而且在绘图当中,咱们使用一样的数据,将其转化为因子以后,在将这些数据放入绘制图像的函数当中,图像将会变得更加具备可读性。咱们有两种方式来建立因子这个数据结构,第一种是在数据框当中自动建立,另外一种方式是直接建立因子。编程

一.利用数据框建立因子

第一种方式是使用间接的方式来建立因子数据集,由于咱们数据框当中若是某一列的数据所有都是字符串,那么R语言将会自动将这一列的数据默认为因子。咱们来建立一个数据框看看:数据结构

> data<-data.frame(name=c("bob","mike","iris"),height=c(178,356,131),gender=c('f','m','f'))
> data
  name height gender
1  bob    178      f
2 mike    356      m
3 iris    131      f

很显然,咱们所建立的数据框,除了height,其余两列的数据都是字符串,所以R语言会将gender和name默认是因子,咱们能够尝试使用class来判断数据的类型:编程语言

> class(data$gender)
[1] "factor"
> class(data$name)
[1] "factor"
> class(data$height)
[1] "numeric"

咱们打印一下hieght:函数

> data$height
[1] 178 356 131

R语言很显然给咱们输出了height所对应数据的值,那么对于因子数据会不会也是这样呢?咱们来看看打印出gender的值是怎样的:spa

> data$gender
[1] f m f
Levels: f m

能够从上面看到在打印gender的时候,R语言还显示出了level,这表示这个因子数据当中的数据有哪些类型,咱们只有两种性别,所以只会输出 f 和 m 。code

下面再来看看name的level如何:blog

> data$name
[1] bob  mike iris
Levels: bob iris mike

这三个姓名是各不相同的,所以会打印出不一样的三个姓名level。字符串

固然咱们也能够直接使用level函数来查看因子当中的level,不是因子数据则会输出null,以下所示:class

> levels(data$height)
NULL
> levels(data$gender)
[1] "f" "m"
> levels(data$name)
[1] "bob"  "iris" "mike"

nlevel函数用来查看因子数据level的长度:统计

> nlevels(data$name)
[1] 3

二.利用factor函数直接建立因子

咱们建立一个有关性别的因子:

> sex=factor(c('f','m','f','f','m'),levels=c('f','m'),labels=c('female','male'),ordered=TRUE)
> sex
[1] female male   female female male  
Levels: female < male

在上面的代码当中,向量c表明了因子当中的数据集,levels表明了咱们人为设定的level,固然即便不写这个,factor函数也会自动帮咱们进行设定,可是这里为了和后面的labels相对应,所以必写。labels表示咱们因子建立完毕后,每一个因子从新命名后的名字,由于以前在建立因子的时候为了数据的简便性就没有将其英语单词写全,ordered表示因子的level按照顺序排列,通常在R语言当中,首先在level当中出现的因子向量,这里是“f”,其顺序会优先于“m”。下面是不设定顺序因子的状况:

> sex<-factor(c('f','f','m','m'),labels=c("female","male"))
> sex
[1] female female male   male  
Levels: female male

咱们利用is.ordered函数来查看因子是否具备顺序:

> is.ordered(sex)
[1] FALSE

很显然这是没有顺序的,所以咱们能够用ordered函数令他具备顺序,若是使用了这个函数,那么因子当中首先出现的level将小于后出现的level:

> ordered(sex)
[1] female female male   male  
Levels: female < male

这就是今天介绍的有关因子的所有知识了!但愿你都可以掌握,并慢慢熟练起来!

相关文章
相关标签/搜索