R语言 数据结构
分析过程:
探索性数据分析—统计推断–数据分析–报告展示
探索性数据分析: 数据可视化
统计推断:结论+结论是错误的概率(<=5%)
回归分析:拟合数据-预测数据
机器学习:训练模型+预测
开发数据产品——GoogleVis API(R制作交互式html)、Manipulate、rCharts(交互式javascrip)、Shiny(嵌入网页的交互式R程序的平台)/Slidify(基于R的报告ppt)
包的安装与加载
install.packages("caret")# 机器学习包
library(caret)
> data()#自带的数据集
> ?InsectSprays #数据集介绍
R数据结构
字符character、数值numeric、整数integer、复数complex、逻辑logical
属性:名称 维度 类型 长度
向量
只能包含 同一个类型 的对象
x <- vector('character', length = 10)
x1 <- 1:4
x2 <- c(1,2,3,4)
x3 <- c(TRUE, 10, "a")
as.numreic()强制转换为数值型
as.logical()强制转换为逻辑型
as.character(x1)强制转换为字符型
矩阵
Matrix:矩阵
向量+维度属性(整数向量:nrow, ncol)
创建矩阵 :
x <- matrix(nrow = 3, ncol = 2)
x <- matrix(1:6,nrow = 3, ncol = 2)
dim(x)
attributes(x)
y <- 1:6
dim(y) <- c(3,2)
y2 <- matrix(1:6, nrow = 3, ncol = 2)
cbind(y,y2)
rbind(y,y2)
> cbind(y,y2)
[,1] [,2] [,3] [,4]
[1,] 1 4 1 4
[2,] 2 5 2 5
[3,] 3 6 3 6
> rbind(y,y2)
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
[4,] 1 4
[5,] 2 5
[6,] 3 6
数组
与矩阵类似,但是维度可以大于2
x <- array(1:24, dim = c(4,6))
x <- array(1:24, dim = c(2,3,4))
, , 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
list 列表
可以包含不同类型的对象
l <- list("a", 2, 10L, 3+4i, TRUE)#建立列表
l2 <- list(a=1 ,b=2 ,c=3)#为列表元素命名
l3 <- list(c(1,2,3),c(4,5,6,7))#列表元素可以是向量,创建元素个数大于1
> l3
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5 6 7
x <- matrix(1:6, nrow = 2, ncol = 3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
dimnames(x) <- list(c("a","b"), c("c","d", "e" )) #重命名
c d e
a 1 3 5
b 2 4 6
因子factor
因子factor:用来处理分类数据的,-整数向量+标签(优于整数向量)
不能比较大小——无序
可以比较——有序
x <- factor(c("female", "female", "male", "male"), levels = c( "male", "female"))
人为设定因子水平,前者为基线水平
查看因子:table(因子名字)
去掉标签:unclass(因子名字)
缺失值
数据结构——缺失值
-NA/NaN:NaN属于NA,NA不属于NaN
-NA有类型属性:integer NA,character NA等
-is.na()/is.nan()
> x <- c(1,NA,2,NA,3)
> X
> x
[1] 1 NA 2 NA 3
> is.na(x)
[1] FALSE TRUE FALSE TRUE FALSE
> is.nan(x)
[1] FALSE FALSE FALSE FALSE FALSE
> x <- c(1,NAN,2,NAN,3)
Error: object 'NAN' not found
> x <- c(1,NaN,2,NaN,3)
> is.na(x)
[1] FALSE TRUE FALSE TRUE FALSE
> is.nan(x)
[1] FALSE TRUE FALSE TRUE FALSE
数据框
-存储表格数据
-视为各元素长度相同的列表
元素类型可以不同
> df <- data.frame(id=c(1,2,3,4),names=c("a","b","c","d"),gender=c(TRUE,TRUE,FALSE,FALSE))
|每个元素代表一列数据
|每个元素的长度代表行数
> df
id names gender
1 1 a TRUE
2 2 b TRUE
3 3 c FALSE
4 4 d FALSE
> nrow(df)
[1] 4
> ncol(df)
[1] 3
> data.matrix(df)
id names gender
[1,] 1 1 1
[2,] 2 2 1
[3,] 3 3 0
[4,] 4 4 0
日期和时间
Date / time
-日期:Date,是距离19700101的天数
获取当前系统的时间:date() #是字符型
获得日期类型的数据:Sys.Date() #是Date类型
将字符串转变为Date类型:as.Date("yyyy-mm-dd")
获取星期:weekdays(Date类型变量名字)
获取月份:months(Date类型变量名字)
获取季度:quarters(Date类型变量名字)
获取距离1970-01-01的天数:julian(Date类型变量名字)
Date类型之间可以进行运算,相减就是相差的天数,通过as.numeric()来转变为数值类型
-时间:POSIXct/POSIXlt,是距离19700101的秒数
POSIXct:整数,常用于存入数据框
POSIXlt:列表,还包含星期、年、月、日等信息
获取当前系统时间:Sys.time() #是POSIXct类型
通过names(unclass(POSIXlt类型变量名))获取存储的信息。通过"POSIXlt类型变量名$信息"获得,比如p$sec
时间的模式存储strptime
通过as.来进行变量类型转换