数据类型与数据结构
Posted 数据挖掘与R语言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型与数据结构相关的知识,希望对你有一定的参考价值。
想要用好R语言来进行数据分析和挖掘,首先你得了解R语言的数据类型以及数据结构的构成,本文主要介绍R中的数据类型以及数据结构。
数据类型
R中的数据类型主要包括数值型, 字符型,因子型,逻辑型,缺失数据
数值型numeric
数值型数据是计算中最常用的数据类型,它是包括四则运算、乘方、开方、阶乘、排列组合等在内的运算都会用到的一种数据类型。
> 1
[1] 1
> 1+2
[1] 3
> 2^10
[1] 1024
字符型character
字符型数据存储字符型数据,也可用来作为列名,文本挖掘的数据类型也主要是以字符型数据为主。
> "Paul"
[1] "Paul"
> "Clippers"
[1] "Clippers"
因子型factor
因子型在R中用到的不是很多,它主要用来存储离散的分类数据或者有序
> factor("A")
[1] A
Levels: A
> factor(c("B","A","C"))
[1] B A C
Levels: A B C
> factor(c("B","A","C"),levels = c("A","B","C"),ordered = T)
[1] B A C
Levels: A < B < C
逻辑型logical
逻辑型向量在条件判断语句中发挥着比较重要的作用
> 1>2
[1] FALSE
> 2==2
[1] TRUE
缺失数据missing data
缺失数据类型有三种,NA,NaN和NULL,三种含义不相同,NA指一般意义上的数据缺失,NaN表示数据无意义,NULL表示空集。
数据结构
R中的基本数据结构有五种,向量、矩阵、数组、数据框、列表。五种数据格式都有各自的特点,下面我来逐一进行介绍。
向量vector
向量是一维数据,它所存储的数据类型必须是一致的,否则R会将强制转换将其统一格式。
创建向量
向量的一般创建方式是c(),如score=c(43,81,61,53,61),即创建了一个名为score的数值型向量,它包含五个元素,分别是43,81,61,53,61
a:b 生成a到b的数列,间隔为1
> 1:5
[1] 1 2 3 4 5
seq(from = a, to = b, by = n)生成间隔为1的a到b的数列
> seq(from=1,to=10,by=2)
[1] 1 3 5 7 9
rep(x, times) 生成重复n次x的向量(x本身可以是向量)
> rep(1,5)
[1] 1 1 1 1 1
> rep(1:2,3)
[1] 1 2 1 2 1 2
提取向量元素
提取元素采用[ ]来进行操作
> score[2] #取单个元素
[1] 81
> score[c(1,2)] #取多个元素
[1] 43 81
> score[score>60] #按条件提取
[1] 81 61 61
> score[-4] #删除元素
[1] 43 81 61 61
> c(score,100) #添加元素
[1] 43 81 61 53 61 100
> score[4] <- 100 #修改元素
> score
[1] 43 81 61 100 61
提取向量的索引
> which(score>60) #按条件提取索引
[1] 2 3 5
> which(score==81)
[1] 2
> which.max(score) #取最大值索引
[1] 2
> which.min(score) #取最小值索引
[1] 1
> match(81,score) #匹配提取索引
[1] 2
矩阵matrix
矩阵是一个二维数据集,它所存储的数据类型与向量一样,必须是一致的。
创建矩阵
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
M <- matrix(data = c(c(183,198,206,211,216),c(43,81,61,53,61)),nrow = 5,ncol=2,byrow=FALSE,dimnames = list(c("Pual","Kobe","James","Duncan","O'Neal"),c("height","score")))
> M
height score
Pual 183 43
Kobe 198 81
James 206 61
Duncan 211 53
O'Neal 216 61
提取矩阵元素
> M[1,2] # 提取单个元素
[1] 43
> M[,2] # 提取整列数据
Pual Kobe James Duncan O'Neal
43 81 61 53 61
> M[1,] # 提取整行数据
height score
183 43
数组array
数组是向量和矩阵的拓展,它可以是一维、二维,也可以是多维的。
创建数组
array(data = NA, dim = length(data), dimnames = NULL)
> A <- array(1:24, c(2,3,4))
> A
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
提取数据元素
> A[1,1,1]
[1] 1
> A[,,4]
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
> A[,2,4]
[1] 21 22
数据框data.frame
数据框是二维数据集,它和结构化数据库中的表结构类似,它的每一列数据中的数据类型必须相同,但是不同列之间的数据类型可以不一样。它是在数据分析和挖掘中用到的最多的一种数据结构。
创建数据框
data.frame(..., row.names = NULL)
> dat <- data.frame(name=c("Pual","Kobe","James","Duncan","O'Neal"),
+ height=c(183,198,206,211,216),
+ score=c(43,81,61,53,61),
+ team=c("Clippers","Lakers","Cavaliers","Lakers","Spurs"),
+ stringsAsFactors = F)
> dat
name height score team
1 Pual 183 43 Clippers
2 Kobe 198 81 Lakers
3 James 206 61 Cavaliers
4 Duncan 211 53 Lakers
5 O'Neal 216 61 Spurs
提取数据框元素
提取列用$加列名或者[["列名"]]
> dat$name
[1] "Pual" "Kobe" "James" "Duncan" "O'Neal"
> dat[["height"]]
[1] 183 198 206 211 216
数据框同矩阵一样是二维的,同样可以采用提取矩阵元素的方式来提取数据框中的元素。
列表list
列表可以同时包含以上一种或者多种数据结构,一般用它来存储非结构化的数据。
创建列表
list(...)
> L <- list(name="Pual",height=183,
+ scores=c(43,21,22,23,18))
> L
$name
[1] "Pual"
$height
[1] 183
$scores
[1] 43 21 22 23 18
提取列表元素
> L$scores
[1] 43 21 22 23 18
> L[["name"]]
[1] "Pual"
小结
这几种常用的数据类型、数据结构之间有一定的关系,可以相互转换。向量和矩阵可以看做是数组中的一维和二维的特殊情形,数据框是列表的一种特殊情形,数据框和矩阵在一定条件下可以相互转换。
长按识别图中二维码
以上是关于数据类型与数据结构的主要内容,如果未能解决你的问题,请参考以下文章