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)

时间: 2024-10-11 19:50:46

R语言数据类型的相关文章

R语言-数据类型与运算符

一.在线安装包 install.packages(package_name) 二.查看变量 ls() 三.删除变量 rm() 四.变量类型 元数据类型:字符,整形,数字,虚数,BOOL 向量:vec=c(1,2,3) 列表:ls=list(1,'a',c(1,2,3)) 矩阵:matri=matrix(c(1,2,2,2,3,4),nrow=2,ncol=3,byrow=TURE) 数据帧:frame=data.frame(name=c("zhangsan","wangwu&

R语言编程艺术# 数据类型向量(vector)

R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用typeof(x)函数查询. > #插入向量元素 > x <- c(88,5,12,13) > x [1] 88 5 12 13 > x <- c(x[1:3],168,x[4]) #插入168数字在13之前 > x [1] 88 5 12 168 13 > 2.

约翰霍普金斯大学数据科学系列课程——R语言:数据类型

1.原子对象 R语言有5类最基本的原子对象: 1)  字符型character 字符型对象用" "包括. 2)  数值型numeric(real numbers) 数字对象在R中默认为数值型(numeric),如果你需要指定一个数据为整数型,需要在改数字后加上L.如:数字123默认为numeric型,如果需要其为integer型,可表示为123L. 3)  整数型integer 4)  复数型complex 复数的实部用实数表示,虚部用实数+i表示.如:3+2i,2+1i等. 5) 

R语言--变量与数据类型

R语言的数据分类 R语言的数据类型较多,但都是动态声明,即变量不会声明为某种数据类型.变量分配为R对象 向量 列表 矩阵 数组 数据帧 因子 下面是几种最简单对象的类型 # Atomic vector of type character. print("abc");#character # Atomic vector of type double. print(12.5)#numeric # Atomic vector of type integer. print(63L)#integ

R语言基础知识学习(一):R中的数据类型和数据结构

R中数据类型有:数值型,字符型,逻辑型和复数型等. R 中存储数据的结构有:向量,数组,因子,数据框,矩阵和列表等. 向量是用于存储数值型.字符型或逻辑型数据的一维数组. 用函数c()可以来创建一个向量,如: > a <- c(1,2,3,4)> b <- c('china','america','japan')> c <- c(TRUE,FALSE,TRUE,FALSE)> ls()[1] "a" "b" "c&

R语言入门

向量是 R 语言中最基本的数据类型,在 R 中没有单独的标量(例如 1 本质上是 c(1)) 注意 R 语言的下标是从 1 开始的 负数下标表示不选这个这些下标,例如: > a <- c(2,5,8)> a[-2][1] 2 8 循环补齐 向量有个比较有趣的性质,当两个向量进行操作时,如果长度不等,长度比较短的一个会复制自己直到自己和长的一样长. > a <- c(3,4)> b <- c(1,2,5,6)> a+b[1]  4  6  8 10 新建一个矩

R语言和中国地图

上图是R语言绘制的按地域分布的数据图.更科学,更严谨,也更有质感的样子. 今天瞎写点东西,我在想数据分析的意义是什么,也许就是研究事物存在的形式.而事物存在的形式是什么样子呢,从最初的三维空间,爱因斯坦伯伯把时间也拉了进来,于是时间作为一种变化的空间而存在着,成为第四维.现在好像还发现了第五空间,可能是人的心理空间或者意识空间,还有人说是曲率,不一而足.个人认为i,所有的事物应该都是彼此联系的,没有单纯的独立的与其他东西绝缘的存在.而人的内心,人的思维目前确实是独立于其他四维的空间.所以他应该是

R入门&lt;三&gt;-R语言实战第4章基本数据管理摘要

入门书籍:R语言实战 进度:1-4章 摘要: 1)实用的包 forecast:用于做时间序列预测的,有auto.arima函数 RODBC:可以用来读取excel文件.但据说R对csv格式适应更加良好,相应的导入导出均较为方便(read.table, write等) reshape:目前用到rename函数,可以方便的对数据变量重命名 fCalendar:在日期输入处提及,据说对日期运算有奇效,但无具体示例.同理如lubridate sqldf:在数据选取处提及,可代替subset以及各种whe

R语言 数据集

第二章 创建数据集 1.R语言的数据类型 数值型.字符型.逻辑型.复数型(虚数)和原生型(字节) 2.数据结构 a.向量:存储数值型.字符型和逻辑型数据的一维数组 > a=c(1,2,3,4,5)#创建 组合功能的函数c() > a [1] 1 2 3 4 5 > a[c(1,4)]#访问 方括号+向量中指定的元素 [1] 1 4 b.矩阵:二维数组 mymatrix=matrix(1:20,nrow=5,ncol=4,byrow=TRUE,dimnames=list(rnames,cn