R 学习笔记(4) -- 数据框

作者: wangpeng905 | 来源:发表于2017-04-04 18:42 被阅读52次

    数据框是列表的一种特例,可以看成是每个组件都是长度相同的向量的列表。数据框有类似列表的特性,也有类似矩阵的特性。

    创建数据框

    data.frame() 函数:

    > kids
    [1] "Jack" "Jill"
    > ages
    [1] 12 10
    > # stringsAsFactors=FALSE 参数相当于 as.is=TRUE
    > # options() 函数可以设置全局 stringsAsFactors 选项
    > d <- data.frame(kids,ages,stringsAsFactors=FALSE)
    > d
      kids ages
    1 Jack   12
    2 Jill   10
    > str(d)
    'data.frame':   2 obs. of  2 variables:
     $ kids: chr  "Jack" "Jill"
     $ ages: num  12 10
    
    > # 不同的访问数据框的列的方式,有列表的方式和矩阵的方式
    > d[[1]]
    [1] "Jack" "Jill"
    > d$kids
    [1] "Jack" "Jill"
    > d[,1]
    [1] "Jack" "Jill"
    

    提取子集

    数据框提取子集的方法可以用类似矩阵取子集的方式,也可以用矩阵的方式进行筛选。
    缺失值(NA)的去除可以用 na.rm=TREU 。
    subset() 函数取子集,默认去除缺失值 NA,更方便。
    从数据框中去除包含缺失值的观测,可以利用 complete.case() 函数简化操作,complet.case() 函数检测每一行是否包含 NA 生成一个布尔型向量。
    rbind() 和 cbind() 函数也可以用来给数据框增加行和列。

    合并数据框

    merge() 函数,类似关系型数据库中根据某个共同变量合并两个表,merge() 函数可以合并两个数据框并生成一个新的数据框:

    > d1
         kids states
    1    Jack     CA
    2    Jill     MA
    3 Jillian     MA
    4    John     HI
    > d2
      ages    kids
    1   10    Jill
    2    7 Lillian
    3   12    Jack
    > d <- merge(d1,d2)
    > d
      kids states ages
    1 Jack     CA   12
    2 Jill     MA   10
    > # 共同变量有重复值,用 merge() 合并出现错误
    > d2a <- rbind(d2,list(15,"Jill"))
    > d2a
      ages    kids
    1   10    Jill
    2    7 Lillian
    3   12    Jack
    4   15    Jill
    > merge(d1,d2a)
      kids states ages
    1 Jack     CA   12
    2 Jill     MA   10
    3 Jill     MA   15
    
    

    如果共同变量在其中一个数据框中有重复值,用 merge() 合并可能出现错误。

    对数据框使用 lapply() 函数

    数据框是列表的一种特例,也可以应用 lapply() 函数。

    > d2
      ages    kids
    1   10    Jill
    2    7 Lillian
    3   12    Jack
    > d3 <- lapply(d2,sort)
    > d3
    $ages
    [1]  7 10 12
    
    $kids
    [1] "Jack"    "Jill"    "Lillian"
    

    但这个例子破坏了名字和年龄之间的对应关系,没有意义,仅为示例。


    读古人的书,一方面要知道古人聪明到怎样,一方面也要知道古人傻到怎样。--胡适

    相关文章

      网友评论

        本文标题:R 学习笔记(4) -- 数据框

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