R语言入门2:数据结构-3

作者: 曹务强 | 来源:发表于2017-11-21 22:51 被阅读20次

    6. 因子(farcor)

    在R语言中,因子是用来处理分类数据的,分类数据又可以分为有序和无序。我们可以把因子简单理解为整数向量+标签。比如,我们把性别(男,女)分别加上标签(1和2),那么1就代表男,2就代表女。

    (1)如何创建因子

    # 使用factor()函数创建因子
    > x <-factor(c("female","female","male","male","female"))
    > x
    [1] female female male   male   female #因子的内容
    Levels: female male  #因子包含两个水平
    # 创建因子时添加标签
    > y<-factor(c("female","female","male","male","female"),levels = c("male","female")) # 使用levels()添加水平参数
    > y
    [1] female female male   male   female #因子的内容不变
    Levels: male female # 水平的顺序发生了改变
    

    当我们使用R进行统计分析时,可以通过因子指定分析的基线水平,这在统计分析中时非常重要的。

    (2)对因子的操作

    # 使用table()函数统计因子各水平的个数
    > table(y)
    y
      male female 
         2      3
    # 使用unclass()函数去掉因子的水平
    > unclass(y)
    [1] 2 2 1 1 2
    attr(,"levels") 
    [1] "male"   "female"
    

    前面我们提高过,可以把因子简单理解为整数向量+标签。如果使用uncalss()函数去掉因子的水平后,再查看其属性,会发生什么呢?

    > class(unclass(y))
    [1] "integer" #变成了整数型向量
    

    7.缺失值(missing value)

    在R中缺失值有两种表示方式:NaN和NA。NaN一般用来表示数字的缺失,而NA可用来表示多种类型的缺失。因此,NA具有类型属性,比如integer NA(整数缺失)和character NA(字符缺失)等。

    判断向量中是否含有与缺失值

    # 创建一个含有NA类型缺失值的向量
    > x<- c(1,2,NA,3,NA,5)
    > is.na(x) # 使用is.na()函数查看是否含有NA
    [1] FALSE FALSE  TRUE FALSE  TRUE FALSE
    > is.nan(x) #使用is.nan()查看是否含有NaN
    [1] FALSE FALSE FALSE FALSE FALSE FALSE
    
    # 创建一个含有NaN和NA类型缺失值的向量
    > x<- c(1,2,NA,3,NaN,5)
    > is.na(x) # 使用is.na()函数查看是否含有NA
    [1] FALSE FALSE  TRUE FALSE  TRUE FALSE
    > is.nan(x)
    [1] FALSE FALSE FALSE FALSE  TRUE FALSE  #使用is.nan()查看是否含有NaN
    

    以上例子说明,is.na()函数可识别NA和NaN类型的缺失值,而is.nan()函数只能识别NaN类型的缺失值,而不能识别NA类型的缺失值。这也说明了,NA包含NaN。

    8.数据框(data frame)

    在R中,数据框是用来存储表格数据的。我们可以把数据框看做各元素长度相同的列表,每个元素代表一列数据,每个元素的长度代表行数,并且元素的类型可以不同。

    (1)数据框的创建

    # 使用data.frame()函数创建数据框
    > def <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,FALSE,TRUE,TRUE))
    > def
      id name gender
    1  1    a   TRUE
    2  2    b  FALSE
    3  3    c   TRUE
    4  4    d   TRUE
    

    由上面输出的结果可以看到,我们定义的第一个元素为数据框的第一列,第二个元素时数据框的第二列,第三个元素时数据框的第三类。并且,数据框和矩阵非常相似,所不同的是,矩阵中每一列中元素的类型都是一样的,而数据框可以不同。

    同时,我们还可以把数据框看成列表,数据框的第一列对应于列表的第一个元素,数据框的第二列对应于列表的第二个元素,数据框的第三类对应于列表的第三个元素:

    > def2 <- list(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,FALSE,TRUE,TRUE))
    > def2
    $id
    [1] 1 2 3 4
    
    $name
    [1] "a" "b" "c" "d"
    
    $gender
    [1]  TRUE FALSE  TRUE  TRUE
    

    注:本文为我在慕课网课程R语言基础的学习笔记,使用Markdown写作。

    相关文章

      网友评论

        本文标题:R语言入门2:数据结构-3

        本文链接:https://www.haomeiwen.com/subject/hiugvxtx.html