R语言的数据类型

数据大师
数据大师
数据大师
294
文章
0
评论
2021-08-1214:50:09 评论 968 2640字
摘要

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

 

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

 

语法: 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

二、因子(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 3Levels: 1 2 3> factor(1:3, levels=1:6)[1] 1 2 3Levels: 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 3Levels: 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 BLevels: C < B < A

三、矩阵(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

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

 

语法: 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五、 数据框(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 scort1 Mr A     1    582 Mr B     1    153 Mr C     1    41
 
 

数据访问:

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

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

 
 

六、列表(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"
 
 

End.

作者:V"V

本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520

更多文章前往首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: