美文网首页
《R语言实战》学习笔记---Chapter2 创建数据集(2)

《R语言实战》学习笔记---Chapter2 创建数据集(2)

作者: RSP小白之路 | 来源:发表于2023-08-06 16:26 被阅读0次

    3. 数据结构

    R拥有许多用于存储数据的对象类型, 包括标量、 向量、 矩阵、 数组、数据框和列表。 其中数据框是最常用的。

    3.4 数据框

    数据框(dataframe)变量观测
    不同列数据类型/模式(数值型、字符型)可以不同,同一列/变量数据类型相同即可
    数据框(dataframe)是你在R中最常处理的数据结构,通过函数data.frame() 创建:

    mydata <- data.frame(col1, col2, col3,...)
    

    每一列的名称可由函数names 指定。
    书中例子如下:

    patientID <- c(1, 2, 3, 4)
    age <- c(25, 34, 28, 52)
    diabetes <- c("Type1", "Type2", "Type1", "Type1")
    status <- c("Poor", "Improved", "Excellent", "Poor")
    patientdata <- data.frame(patientID, age, diabetes, status)
    print(patientdata)
    
    patientdata打印结果

    选取数据框中的元素

    > patientdata[1:2]
      patientID age
    1         1  25
    2         2  34
    3         3  28
    4         4  52
    
    > patientdata[c("diabetes", "status")]
      diabetes    status
    1    Type1      Poor
    2    Type2  Improved
    3    Type1 Excellent
    4    Type1      Poor
    
    > patientdata$age
    [1] 25 34 28 52
    

    attach()、detach()和with()函数

    • 使用选取元素的一般方法:
    > summary(mtcars$mpg)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      10.40   15.43   19.20   20.09   22.80   33.90 
    > table((mtcars$disp))
     71.1  75.7  78.7    79  95.1   108 120.1 120.3   121 140.8   145 
        1     1     1     1     1     1     1     1     1     1     1 
    146.7   160 167.6   225   258 275.8   301   304   318   350   351 
        1     2     2     1     1     3     1     1     1     1     1 
      360   400   440   460   472 
        2     1     1     1     1 
    
    • 使用attach()、detach()函数
    > attach(mtcars)
    > summary(mpg)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      10.40   15.43   19.20   20.09   22.80   33.90 
    > table(disp)
    disp
     71.1  75.7  78.7    79  95.1   108 120.1 120.3   121 140.8   145 
        1     1     1     1     1     1     1     1     1     1     1 
    146.7   160 167.6   225   258 275.8   301   304   318   350   351 
        1     2     2     1     1     3     1     1     1     1     1 
      360   400   440   460   472 
        2     1     1     1     1 
    > detach(mtcars)
    > summary(mpg)   #在detach函数之后,无法使用
    Error in summary(mpg) : object 'mpg' not found
    
    • 使用with()函数
    > with(mtcars,
    +      {print(summary(mpg))
    +        table(disp)})
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      10.40   15.43   19.20   20.09   22.80   33.90 
    disp
     71.1  75.7  78.7    79  95.1   108 120.1 120.3   121 140.8   145 
        1     1     1     1     1     1     1     1     1     1     1 
    146.7   160 167.6   225   258 275.8   301   304   318   350   351 
        1     2     2     1     1     3     1     1     1     1     1 
      360   400   440   460   472 
        2     1     1     1     1 
    > print(summary(mpg))  #在with作用范围之外,无法使用
    Error in summary(mpg) : object 'mpg' not found
    

    实例标识符/行名

    在R中, 实例标识符(case identifier) 可通过数据框操作函数中的rowname 选项指定。 例如, 语句:

    patientdata <- data.frame(patientID, age, diabetes, status, row.names=patientID)
    
    

    3.5 因子

    如你所见, 变量可归结为名义型、 有序型或连续型变量。 名义型变量是没有顺序之分的类别变量。
    有序型变量 表示一种顺序关系, 而非数量关系。
    类别(名义型) 变量和有序类别(有序型) 变量在R中称为因子(factor)。 因子在R中非常重要, 因为它决定了数据的分析方式以及如何进行视觉呈现。
    函数factor() 以一个整数向量的形式存储类别值,要表示有序型变量, 需要为函数factor()指定参数ordered=TRUE

    > status <- c("Poor", "Improved", "Excellent", "Poor")
    > status_order <- factor(status, order=TRUE, 
    +                        levels=c("Poor", "Improved", "Excellent") )
    > status_label <- factor(status, order=TRUE, 
    +                        levels=c("Poor", "Improved", "Excellent"),
    +                        labels = c("1", "2", "3"))
    > print(status)
    [1] "Poor"      "Improved"  "Excellent" "Poor"     
    > print(status_order)
    [1] Poor      Improved  Excellent Poor     
    Levels: Poor < Improved < Excellent
    > print(status_label)
    [1] 1 2 3 1
    Levels: 1 < 2 < 3
    

    3.6 列表

    列表(list) 是R的数据类型中最为复杂的一种。
    一般来说, 列表就是一些对象(或成分, component) 的有序集合
    列表允许你整合若干(可能无关的) 对象到单个对象名下。
    可以使用函数list()创建列表:

    mylist <- list(object1, object2, ...)
    

    其中的对象可以是目前为止讲到的任何结构。 你还可以为列表中的对象命名:

    mylist <- list(name1=object1, name2=object2, ...)
    

    举个例子:

    > mylist <- list(
    +   a = 12,
    +   b = c("apple", "banana", "egg"),
    +   d = matrix(c(1:6)),
    +   c = data.frame(one = c(1:6), two = c(letters[1:6]), three =c(LETTERS[1:6]) )
    + )
    > print(mylist)
    $a
    [1] 12
    
    $b
    [1] "apple"  "banana" "egg"   
    
    $d
         [,1]
    [1,]    1
    [2,]    2
    [3,]    3
    [4,]    4
    [5,]    5
    [6,]    6
    
    $c
      one two three
    1   1   a     A
    2   2   b     B
    3   3   c     C
    4   4   d     D
    5   5   e     E
    6   6   f     F
    

    书中的一些注意事项

    • .在R中无特殊意义, $具有引用子集的作用;
    • 无多行注释作用,每一行注释都应该以#开头;
    • 将一个值赋给某个向量、 矩阵、 数组或列表中一个不存在的元素时, R将自动扩展这个数据结构以容纳新值。
    • R中没有标量。 标量以单元素向量的形式出现。
    • R中的下标不从0开始, 而从1开始。
    • 变量无法被声明。 它们在首次被赋值时生成。

    相关文章

      网友评论

          本文标题:《R语言实战》学习笔记---Chapter2 创建数据集(2)

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