R语言笔记⑦——向量、矩阵、数组、列表、数据框、因子、时间与日期

向量

向量,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中我们会对时间序列进行分析,主要的步骤如下:

  1. 对时间序列的描述;
  2. 利用前面的结果进行预测。

下面就是一个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"
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值