向量
向量,vector,是R中最重要的一个概念,它是构成其他数据结构的基础。R中的向量概念与数据中向量是不同的,类似于数学上的集合的概念,有一个或多个元素所构成。
向量其实是用于存储数值型、字符型或逻辑型数据的一维数组。
向量的创建
c
函数
可以用函数c
来创建向量。c代表concatenate连接,也可以理解为收集collect,或者合并combine。
> c(1,2,3,4,5,6)
[1] 1 2 3 4 5 6
> c(1:6)
[1] 1 2 3 4 5 6
> c('dfasf','asfsa','fasdf')
[1] "dfasf" "asfsa" "fasdf"
> c(TRUE,FALSE,T,F)
[1] TRUE FALSE TRUE FALSE
seq
函数
通过seq
函数可以创建一个等差数列的向量
> seq(from=1,to=100,by=1)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
[29] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
[57] 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
[85] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
> seq(from=1,to=100,by=2)
[1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75
[39] 77 79 81 83 85 87 89 91 93 95 97 99
rep
函数
rep
函数可以实现一些重复的操作
> rep(2,5)
[1] 2 2 2 2 2
> x <- c(1:5)
> rep(x,5)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
> rep(x,each=5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
> rep(x,each=5,times=2)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
> rep(x,c(1,2,3,4,5))
[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
向量的访问
向量的索引是从1开始的
> x[0]
integer(0)
> x[1]
[1] 1
> x
[1] 1 2 3 4 5
可以通过向量的形式的下标输出,如果是负数代表输出出了它的正整数之外的下标的数
> x[c(2,3)]
[1] 2 3
> x[-1]
[1] 2 3 4 5
还可以通过ture和false来决定是否输出当前下标的值
> y <- c(1:10)
> y
[1] 1 2 3 4 5 6 7 8 9 10
> y[c(T,F,T,T,T,F,T,F,T,F)]
[1] 1 3 4 5 7 9
> y[c(T,F)]
[1] 1 3 5 7 9
> y[c(T,F,F)]
[1] 1 4 7 10
还可以通过下面这种判断的方式输出
> y[y>5 & y<9]
[1] 6 7 8
下面是通过%in%实现的向量操作
> z <- c('one','two','three','four','five')
> z
[1] "one" "two" "three" "four" "five"
> 'one' %in% z
[1] TRUE
> z[z %in% c('one','two')]
[1] "one" "two"
> z %in% c('one','two')
[1] TRUE TRUE FALSE FALSE FALSE
向量的命名
可以通过names函数给向量每一列附上名称,同时我们可以通过名称访问向量的值
> y
[1] 1 2 3 4 5 6 7 8 9 10
> names(y)
NULL
> names(y) <- c('one','two','three','four','five','six','seven','eight','nine','ten')
> y
one two three four five six seven eight nine ten
1 2 3 4 5 6 7 8 9 10
> y['one']
one
1
向量的扩容
向量可以直接将想要添加的数据添加到指定的位置就可以
> v <- 1:3
> v[c(4:6)] <- c(4,5,6)
> v
[1] 1 2 3 4 5 6
> v[20]<- 4
> v
[1] 1 2 3 4 5 6 NA NA NA NA NA NA NA NA NA NA NA NA NA 4
向量的插入
通过append函数实现向量的插入,其中after表示要插入到第几个元素之后,如果是0表示的是插入到第一个
> append(x = v,values = 99,after = 5)
[1] 1 2 3 4 5 99 6 NA NA NA NA NA NA NA NA NA NA NA NA NA 4
> append(x = v,values = 99,after = 0)
[1] 99 1 2 3 4 5 6 NA NA NA NA NA NA NA NA NA NA NA NA NA 4
向量的删除
可以通过负数索引的方式进行删除,如果要删除整个向量变量,可以通过rm函数实现
> y
[1] 1 2 3 4 5 6 7 8 9 10
> y <- y[-c(1:3)]
> y
[1] 4 5 6 7 8 9 10
> rm(y)
> y
错误: 找不到对象'y'
向量的运算
但是必须注意两个向量的元素个数有一定要求,长的向量元素个数必须是短的向量元素个数的整数倍
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x+1
[1] 2 3 4 5 6 7 8 9 10 11
> x-3
[1] -2 -1 0 1 2 3 4 5 6 7
> y<- seq(1,100,length.out = 10)
> y
[1] 1 12 23 34 45 56 67 78 89 100
> x+y
[1] 2 14 26 38 50 62 74 86 98 110
> x*y
[1] 1 24 69 136 225 336 469 624 801 1000
> x**y
[1] 1.000000e+00 4.096000e+03 9.414318e+10 2.951479e+20 2.842171e+31 3.771117e+43 4.183778e+56 2.760699e+70
[9] 8.464150e+84 1.000000e+100
> x%%y
[1] 0 2 3 4 5 6 7 8 9 10
> y%%x
[1] 0 0 2 2 0 2 4 6 8 0
> y%/%x
[1] 1 6 7 8 9 9 9 9 9 10
向量同样可以使用一些数学函数
> x
[1] -4 -3 -2 -1 0 1 2 3 4 5
> abs(x)
[1] 4 3 2 1 0 1 2 3 4 5
矩阵
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。向量是一维的‘,而矩阵是二维的,需要行和列。
创建矩阵
创建一个简单的矩阵
> x<- 1:20
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> m <- matrix(x,nrow = 4,ncol = 5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
byrow属性可以决定排列的顺序是按行方式按列
> m <- matrix(x,nrow = 4, byrow = T)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
> m <- matrix(x,nrow = 4, byrow = F)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
矩阵命名
还可以通过下面的方式给每行每列添加名称
> rnames <- c('R1','R2','R3','R4')
> cnames <- c('C1','C2','C3','C4','C5')
> dimnames(m) <- list(rnames,cnames)
> m
C1 C2 C3 C4 C5
R1 1 5 9 13 17
R2 2 6 10 14 18
R3 3 7 11 15 19
R4 4 8 12 16 20
矩阵的访问
矩阵可以通过索引或者列名行名来访问
> m
C1 C2 C3 C4 C5
R1 1 5 9 13 17
R2 2 6 10 14 18
R3 3 7 11 15 19
R4 4 8 12 16 20
> m[1,2]
[1] 5
> m[1,c(1,2,3)]
C1 C2 C3
1 5 9
> m[2,]
C1 C2 C3 C4 C5
2 6 10 14 18
> m[-3,-2]
C1 C3 C4 C5
R1 1 9 13 17
R2 2 10 14 18
R4 4 12 16 20
> m[,'C1']
R1 R2 R3 R4
1 2 3 4
> m['R3','C1']
[1] 3
矩阵的运算
矩阵支持大部分基本运算,也支持大多数数学函数
> m
C1 C2 C3 C4 C5
R1 1 5 9 13 17
R2 2 6 10 14 18
R3 3 7 11 15 19
R4 4 8 12 16 20
> m+1
C1 C2 C3 C4 C5
R1 2 6 10 14 18
R2 3 7 11 15 19
R3 4 8 12 16 20
R4 5 9 13 17 21
> m*2
C1 C2 C3 C4 C5
R1 2 10 18 26 34
R2 4 12 20 28 36
R3 6 14 22 30 38
R4 8 16 24 32 40
> m+m
C1 C2 C3 C4 C5
R1 2 10 18 26 34
R2 4 12 20 28 36
R3 6 14 22 30 38
R4 8 16 24 32 40
> m*m
C1 C2 C3 C4 C5
R1 1 25 81 169 289
R2 4 36 100 196 324
R3 9 49 121 225 361
R4 16 64 144 256 400
> t(m)
R1 R2 R3 R4
C1 1 2 3 4
C2 5 6 7 8
C3 9 10 11 12
C4 13 14 15 16
C5 17 18 19 20
> colMeans(m)
C1 C2 C3 C4 C5
2.5 6.5 10.5 14.5 18.5
> rowMeans(m)
R1 R2 R3 R4
9 10 11 12
数组
数组相当于多维的矩阵。
数组的创建
数组可以直接通过dim函数设置一个向量的维度创建数组
> x<- 1:20
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> dim(x)
NULL
> dim(x) <- c(2,2,5)
> x
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
, , 4
[,1] [,2]
[1,] 13 15
[2,] 14 16
, , 5
[,1] [,2]
[1,] 17 19
[2,] 18 20
还可以通过array函数创建数组
> dim1 <- c('A1','A2')
> dim2 <- c('B1','B2','B3')
> dim3 <- c('C1','C2','C3','C4')
> z <- array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3))
> z
, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24
列表
列表在模式上和向量类似,都是一维数据集合。但是向量只能存储一种数据类型,列表中的对象可以是R中的任何数据结构,甚至列表本身。
列表的创建
> a <- 1:20
> b <- matrix(1:20,4)
> c <- mtcars
> d <- 'hello world'
> mlist <- list(a,b,c,d)
> mlist
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
[[3]]
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
[[4]]
[1] "hello world"
列表的命名
还可以为每一个列表元素添加名称
> mlist <- list(one = a,two = b,three = c,four = d)
列表的访问
可以通过索引和名称访问,名称的访问也有两种形式,注意下面的访问都只会返回一个列表子集,本质上还是列表
> mlist[2]
$two
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> mlist["four"]
$four
[1] "hello world"
> mlist$one
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
但是如果通过[[]]
的方式访问输出的就是本身的类型了
> mlist[[1]]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> class(mlist[[1]])
[1] "integer"
> class(mlist[1])
[1] "list"
列表的添加和修改
注意需要用双中括号的模式
> mlist[[4]] <- c(1:20)
> mlist[[5]] <- 'sfsaf'
列表项的删除
可以通过负数的方式删除,也可以直接赋予null值
> mlist[[5]] <- NULL
> mlist <- mlist[-5]
数据框
数据框是一种表格式的数据结构。数据框旨在模拟数据集,与其他统计软件例如SAS或者SPSS中的数据集的概念一致。
数据集通常式由数据构成的一个矩形数组,行表示观测,列表示变量。不同的行业对于数据集的行和列叫法不同。
数据框的创建
一般通过data.frame
函数创建数据框,参数是数据框中每一列的数据
> state <- data.frame(state.name,state.abb,state.region,state.x77)
> state
state.name state.abb state.region Population Income Illiteracy Life.Exp Murder HS.Grad Frost
Alabama Alabama AL South 3615 3624 2.1 69.05 15.1 41.3 20
Alaska Alaska AK West 365 6315 1.5 69.31 11.3 66.7 152
Arizona Arizona AZ West 2212 4530 1.8 70.55 7.8 58.1 15
Arkansas Arkansas AR South 2110 3378 1.9 70.66 10.1 39.9 65
California California CA West 21198 5114 1.1 71.71 10.3 62.6 20
Colorado Colorado CO West 2541 4884 0.7 72.06 6.8 63.9 166
Connecticut Connecticut CT Northeast 3100 5348 1.1 72.48 3.1 56.0 139
Delaware Delaware DE South 579 4809 0.9 70.06 6.2 54.6 103
Florida Florida FL South 8277 4815 1.3 70.66 10.7 52.6 11
Georgia Georgia GA South 4931 4091 2.0 68.54 13.9 40.6 60
Hawaii Hawaii HI West 868 4963 1.9 73.60 6.2 61.9 0
Idaho Idaho ID West 813 4119 0.6 71.87 5.3 59.5 126
Illinois Illinois IL North Central 11197 5107 0.9 70.14 10.3 52.6 127
Indiana Indiana IN North Central 5313 4458 0.7 70.88 7.1 52.9 122
Iowa Iowa IA North Central 2861 4628 0.5 72.56 2.3 59.0 140
Kansas Kansas KS North Central 2280 4669 0.6 72.58 4.5 59.9 114
Kentucky Kentucky KY South 3387 3712 1.6 70.10 10.6 38.5 95
Louisiana Louisiana LA South 3806 3545 2.8 68.76 13.2 42.2 12
Maine Maine ME Northeast 1058 3694 0.7 70.39 2.7 54.7 161
Maryland Maryland MD South 4122 5299 0.9 70.22 8.5 52.3 101
Massachusetts Massachusetts MA Northeast 5814 4755 1.1 71.83 3.3 58.5 103
Michigan Michigan MI North Central 9111 4751 0.9 70.63 11.1 52.8 125
Minnesota Minnesota MN North Central 3921 4675 0.6 72.96 2.3 57.6 160
Mississippi Mississippi MS South 2341 3098 2.4 68.09 12.5 41.0 50
Missouri Missouri MO North Central 4767 4254 0.8 70.69 9.3 48.8 108
Montana Montana MT West 746 4347 0.6 70.56 5.0 59.2 155
Nebraska Nebraska NE North Central 1544 4508 0.6 72.60 2.9 59.3 139
Nevada Nevada NV West 590 5149 0.5 69.03 11.5 65.2 188
New Hampshire New Hampshire NH Northeast 812 4281 0.7 71.23 3.3 57.6 174
New Jersey New Jersey NJ Northeast 7333 5237 1.1 70.93 5.2 52.5 115
New Mexico New Mexico NM West 1144 3601 2.2 70.32 9.7 55.2 120
New York New York NY Northeast 18076 4903 1.4 70.55 10.9 52.7 82
North Carolina North Carolina NC South 5441 3875 1.8 69.21 11.1 38.5 80
North Dakota North Dakota ND North Central 637 5087 0.8 72.78 1.4 50.3 186
Ohio Ohio OH North Central 10735 4561 0.8 70.82 7.4 53.2 124
Oklahoma Oklahoma OK South 2715 3983 1.1 71.42 6.4 51.6 82
Oregon Oregon OR West 2284 4660 0.6 72.13 4.2 60.0 44
Pennsylvania Pennsylvania PA Northeast 11860 4449 1.0 70.43 6.1 50.2 126
Rhode Island Rhode Island RI Northeast 931 4558 1.3 71.90 2.4 46.4 127
South Carolina South Carolina SC South 2816 3635 2.3 67.96 11.6 37.8 65
South Dakota South Dakota SD North Central 681 4167 0.5 72.08 1.7 53.3 172
Tennessee Tennessee TN South 4173 3821 1.7 70.11 11.0 41.8 70
Texas Texas TX South 12237 4188 2.2 70.90 12.2 47.4 35
Utah Utah UT West 1203 4022 0.6 72.90 4.5 67.3 137
Vermont Vermont VT Northeast 472 3907 0.6 71.64 5.5 57.1 168
Virginia Virginia VA South 4981 4701 1.4 70.08 9.5 47.8 85
Washington Washington WA West 3559 4864 0.6 71.72 4.3 63.5 32
West Virginia West Virginia WV South 1799 3617 1.4 69.48 6.7 41.6 100
Wisconsin Wisconsin WI North Central 4589 4468 0.7 72.48 3.0 54.5 149
Wyoming Wyoming WY West 376 4566 0.6 70.29 6.9 62.9 173
Area
Alabama 50708
Alaska 566432
Arizona 113417
Arkansas 51945
California 156361
Colorado 103766
Connecticut 4862
Delaware 1982
Florida 54090
Georgia 58073
Hawaii 6425
Idaho 82677
Illinois 55748
Indiana 36097
Iowa 55941
Kansas 81787
Kentucky 39650
Louisiana 44930
Maine 30920
Maryland 9891
Massachusetts 7826
Michigan 56817
Minnesota 79289
Mississippi 47296
Missouri 68995
Montana 145587
Nebraska 76483
Nevada 109889
New Hampshire 9027
New Jersey 7521
New Mexico 121412
New York 47831
North Carolina 48798
North Dakota 69273
Ohio 40975
Oklahoma 68782
Oregon 96184
Pennsylvania 44966
Rhode Island 1049
South Carolina 30225
South Dakota 75955
Tennessee 41328
Texas 262134
Utah 82096
Vermont 9267
Virginia 39780
Washington 66570
West Virginia 24070
Wisconsin 54464
Wyoming 97203
数据框的访问
可以通过索引访问
> state[1]
> state[c(2,4)]
还可以通过列名或者行名访问
> state['state.abb']
> > state['Alabama',]
state.name state.abb state.region Population Income Illiteracy Life.Exp Murder HS.Grad Frost Area
Alabama Alabama AL South 3615 3624 2.1 69.05 15.1 41.3 20 50708
当然也可以通过$加列名访问
> state$state.name
[1] Alabama Alaska Arizona Arkansas California Colorado Connecticut
[8] Delaware Florida Georgia Hawaii Idaho Illinois Indiana
[15] Iowa Kansas Kentucky Louisiana Maine Maryland Massachusetts
[22] Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada
[29] New Hampshire New Jersey New Mexico New York North Carolina North Dakota Ohio
[36] Oklahoma Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee
[43] Texas Utah Vermont Virginia Washington West Virginia Wisconsin
[50] Wyoming
50 Levels: Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Florida Georgia Hawaii ... Wyoming
还可以通过attach函数直接将数据框加载到当前窗口中,然后就可以直接通过列名访问元素了,最后使用完后通过detach函数取消加载
> attach(mtcars)
> mpg
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5
[23] 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
> cyl
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4
> detach(mtcars)
因子
说到因子得先介绍一下变量的类型,一般会把变量分为如下三类:
- 名义型变量
- 有序型变量
- 连续型变量
其中数值类型的变量基本都是连续型变量,而在R中名义型变量和有序型变量称为因子,factor。这些分类变量的可能值称为一个水平,level,例如good,better,best,都称为一个level。由这些水平值构成的向量就称为因子。
下面就是一个简单的因子示例,而且会自动给出因子的水平
> f <- factor(c('red','red','green','blue','green','blue','blue'))
> f
[1] red red green blue green blue blue
Levels: blue green red
我们还可以自己设置因子的水平
> week <- factor(c('Mon','Fri','Thu','Wed','Mon','Fri','Sun'),ordered = T,levels = c('Mon','Tue','Wed','Thu','Fri','Sat','Sun'))
> week
[1] Mon Fri Thu Wed Mon Fri Sun
Levels: Mon < Tue < Wed < Thu < Fri < Sat < Sun
时间与日期
在R中我们会对时间序列进行分析,主要的步骤如下:
- 对时间序列的描述;
- 利用前面的结果进行预测。
下面就是一个R自带的一个时间序列集
> presidents
Qtr1 Qtr2 Qtr3 Qtr4
1945 NA 87 82 75
1946 63 50 43 32
1947 35 60 54 55
1948 36 39 NA NA
1949 69 57 57 51
1950 45 37 46 39
1951 36 24 32 23
1952 25 32 NA 32
1953 59 74 75 60
1954 71 61 71 57
1955 71 68 79 73
1956 76 71 67 75
1957 79 62 63 57
1958 60 49 48 52
1959 57 62 61 66
1960 71 62 61 57
1961 72 83 71 78
1962 79 71 62 74
1963 76 64 62 57
1964 80 73 69 69
1965 71 64 69 62
1966 63 46 56 44
1967 44 52 38 46
1968 36 49 35 44
1969 59 65 65 56
1970 66 53 61 52
1971 51 48 54 49
1972 49 61 NA NA
1973 68 44 40 27
1974 28 25 24 24
> class(presidents)
[1] "ts"
下面将字符串转换成日期类型
> a <- '2020-01-01'
> class(a)
[1] "character"
> a <- as.Date(a,format = '%Y-%m-%d')
> class(a)
[1] "Date"
可以通过seq函数生成一组时间序列
> seq(as.Date('2020-01-01'),as.Date('2020-2-25'),by=10)
[1] "2020-01-01" "2020-01-11" "2020-01-21" "2020-01-31" "2020-02-10" "2020-02-20"