• R语言数据类型


          R语言用来存储数据的对象包括: 向量, 因子, 数组, 矩阵, 数据框, 时间序列(ts)以及列表, 下面讲意义介绍.

    1. 向量(一维数据): 只能存放同一类型的数据

    语法: c(data1, data2, ...), 访问的时候下标从1开始(和Matlab相同); 向量里面只能存放相同类型的数据.

    > x <- c(1,5,8,9,1,2,5)
    > x
    [1] 1 5 8 9 1 2 5
    > y <- c(1,"zhao") # 这里面有integer和字符串, 整数自动转化成了字符
    > y[1]
    [1] "1"

    访问:

    > x[-(1:2)]    # 不显示第1,2个元素
    [1] 8 9 1 2 5
    > x[2:4] # 访问第2,3,4个元素
    [1] 5 8 9

    2. 因子(factors):  提供了一个处理分类数据的更简洁的方式

    因子在整个计算过程中不再作为数值, 而是作为一个"符号"而已. 

    factor(x=character(), levels, labels=levels, exclude=NA, ordered=is.ordered(x), nmax=NA)

    x: 一个数据向量, 它将被转换成为因子;

    levels: 用来指定因子可能出现的水平(默认也就是向量x里面互异的值, sort(unique(x)));它是一个字符向量(即每个元素是单个字符, 组成的一个向量), 下面的变量b就是一个字符向量(可以使用as.character()函数来生成). 

    labels: 用来指定水平的名字;

    > a <- c(6,1,3,0)
    > b = as.character(a)
    > b
    [1] "6" "1" "3" "0"

    exclude: 一个值向量, 表示从向量x里面剔除的水平值.

    nmax: 水平数目的上界.

    > factor(1:3)
    [1] 1 2 3
    Levels: 1 2 3
    > factor(1:3, levels=1:6)
    [1] 1 2 3
    Levels: 1 2 3 4 5 6
    > factor(1:6, exclude = 2)
    [1] 1    <NA> 3    4    5    6   
    Levels: 1 3 4 5 6

    一般因子(factor) VS 有序因子(ordered factor)

          因子用来存放变量或者有序变量, 这类变量不能用来计算, 而只能用来分类或者计数. 一般因子表示分类变量, 有序因子用来表示有序变量.

    创建一个因子:

    > colour <- c('G', 'G', 'R', 'Y', 'G', 'Y', 'Y', 'R', 'Y')
    > col <- factor(colour)  #生成因子
    #labels里面的内容代替对应位置处的levels内容
    > col1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow'))
    > levels(col)
    [1] "G" "R" "Y"
    > levels(col1)
    [1] "Green"  "Red"    "Yellow"
    > col2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3'))
    > levels(col2)
    [1] "1" "2" "3"
    > col_vec <- as.vector(col2)
    > class(col_vec)
    [1] "character"
    > col2
    [1] 1 1 2 3 1 3 3 2 3
    Levels: 1 2 3
    > col_num <- as.numeric(col2)
    > col_num
    [1] 1 1 2 3 1 3 3 2 3
    > col3 <- factor(colour, levels = c('G', 'R')) #levels里面没有'B',导致col3里面的'B'变成了<NA>
    > col3
    [1] G    G    R    <NA> G    <NA> <NA> R    <NA>
    Levels: G R
    > colour
    [1] "G" "G" "R" "Y" "G" "Y" "Y" "R" "Y"

    创建一个有序因子:

    > score <- c('A', 'B', 'A', 'C', 'B')
    > score1 <- ordered(score, levels = c('C', 'B', 'A'));
    > score1
    [1] A B A C B
    Levels: C < B < A

    3. 矩阵(matrix, 二维数据): 只能存放同一类型

    语法: matrix(data, nrow = , ncol = , byrow = F) -- byrow = F表示按列来存放数据(默认), byrow=T表示按行存放数据;

    > xx = matrix(1:10, 2, 5)
    > xx
         [,1] [,2] [,3] [,4] [,5]
    [1,]    1    3    5    7    9
    [2,]    2    4    6    8   10

    4. 数组(大于等于三维的数据): 只能存放同一类型

    语法: array(data, dim) -- data: 必须是同一类型的数据; dim: 各维的维度组成的向量;(怎么感觉和matlab里面的reshape函数那么像) 

    > a = array(1:10,c(2,5))
    > a
         [,1] [,2] [,3] [,4] [,5]
    [1,]    1    3    5    7    9
    [2,]    2    4    6    8   10

    5. 数据框(data frame)

    数据框是一种矩阵形式排列的数据(类似于excel表格), 但是和矩阵不同的是, 它的每一列可以是不同的数据类型(还是和excel很像).

    语法: data.frame(data1, data2,...) -- data1,...为每列的数据.

    > name <- c("Mr A", "Mr B", "Mr C")
    > group <- rep(1,3)
    > scort <- c(58,15,41)
    > df <- data.frame(name, group, scort)
    > df
      name group scort
    1 Mr A     1    58
    2 Mr B     1    15
    3 Mr C     1    41

    数据访问:

    > df$name
    [1] Mr A Mr B Mr C
    Levels: Mr A Mr B Mr C

      > df[1]
        name
      1 Mr A
      2 Mr B
      3 Mr C

    6. 列表(list): 可以存放不同类型的数据

    语法: list(name1=component1, name2=component2, ...)

    > xx <- rep(1:2, 3:4)
    > yy <- c('Mr A', 'Mr B', 'Mr C', 'Mr D', 'Mr E', 'Mr D', 'Mr F')
    > zz <- 'discussion group'
    > name.list <- list(group = xx, name = yy, decription = zz)    
    > name.list
    $group
    [1] 1 1 1 2 2 2 2
    
    $name
    [1] "Mr A" "Mr B" "Mr C" "Mr D" "Mr E" "Mr D" "Mr F"
    
    $decription
    [1] "discussion group"

    参考:

    [1] http://blog.sina.com.cn/s/blog_4d9814240102vigp.html (R语言里的因子factor)

  • 相关阅读:
    DotNet的JSON序列化与反序列化
    DotNet指定文件显示的尺寸
    将文本文件的内容存储在DataSet中的方法总结
    Apple的LZF算法解析
    DotNet常用排序算法总结
    C#创建安全的字典(Dictionary)存储结构
    C#创建安全的栈(Stack)存储结构
    转化代码:添加在您网页中用户触发转化行为之后的地方。添加方法
    nginx配置ThinkPHP5二级目录访问
    好久没写原生的PHP调用数据库代码了分享个
  • 原文地址:https://www.cnblogs.com/zhao441354231/p/5970544.html
Copyright © 2020-2023  润新知