了解向量、因子、矩阵、数组、列表和数据框、时间序列(R语言)

资料来自于:R语言入门经典

1、向量(Vector) :

函数vector有两个参数:类型(mode)和长度(length),创建的向量中元素值取决于参数所指定的数据类型:数值型向量则元素值都为0,逻辑型都为FALSE,字符型都为""。以下三个函数有几乎相同的效果(创建一个向量)并且只有一个参数即长度:numeric(),logical(),和character()


2、因子(Factor) :

一个因子不仅包括分类变量本身还包括变量不同的可能水平(即使它们在数据中不出现)。因子函数factor用下面的选项创建一个因子:

     factor(x, levels = sort(unique(x), na.last = TRUE),
            labels = levels, exclude = NA, ordered = is.ordered(x))

levels 用来指定因子可能的水平(缺省值是向量x中互异的值);labels用来指定水平的名字;exclude表示从向量x中剔除的水平值;ordered是一个逻辑型选项用来指定因子的水平是否有次序。回想数值型或字符型的x。下面有一些例子:

> factor(1:3)
[1] 1 2 3

    
    

Levels: 1 2 3 > factor(1:3, levels=1:5) [1] 1 2 3 Levels: 12345 > factor(1:3, labels=c("A", "B", "C"))

[1] A B C Levels: A B C > factor(1:5, exclude=4) [1] 1 2 3 NA 5 Levels: 1235 

函数levels用来提取一个因子中可能的水平值:

> ff <- factor(c(2, 4), levels=2:5)

> ff [1] 2 4 Levels: 2345

> levels(ff)
[1] "2" "3" "4" "5"

3、矩阵(Matrix) :

一个矩阵实际上是有一个附加属性(维数dim)的向量,维数即为一个长度为2的向量,用来指定矩阵的行数和列数。一个矩阵可以用函数matrix来创建: 

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
            dimnames = NULL)

选项byrow表示数据给出的值是要按列填充(缺省值)还是按行填充(如果为TRUE)。可以通过选项dimnames给行列命名。 

> matrix(data=5, nr=2, nc=2)
          [,1] [,2]
     [1,]    5    5
     [2,]    5    5
> matrix(1:6, 2, 3)
          [,1] [,2] [,3]
     [1,]    1    3    5
     [2,]    2    4    6
> matrix(1:6, 2, 3, byrow=TRUE)
          [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

另一种创建矩阵的方法是给维数适当的赋值(初始值为NULL):

> x <- 1:15

>x

      [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 > dim(x)
     NULL
 > dim(x) <- c(5, 3)

>x
[,1] [,2] [,3]

     [1,]    1    6   11
     [2,]    2    7   12
     [3,]    3    8   13
     [4,]    4    9   14
     [5,]    5   10   15


4、数据框(Data frame) :

前面我们已经看到一个数据框可以由函数read.table 间接创建;这里也可以用函数data.frame来创建。数据框中的向量必须有相同的长度,如果其中有一个比其它的短,它将“循环”整数次(以使得其长度与其它向量相同):

> x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
> data.frame(x, n)

> data.frame(x, M)

        x  M

     1 1 10
     2 2 35
     3 3 10
     4 4 35
     > data.frame(x, y)
     Error in data.frame(x, y) :
         arguments imply differing number of rows: 4, 3

如果一个因子包含在一个数据框中,它必须和其中的向量有相同的长度。列名也是可以改变的,例如,data.frame(A1=x, A2=n)。用户也可以使用row.names给行命名,但是,这个命名向量必须是字符型的而且长度等于这个数据框的行数。最后,注意数据框和矩阵一样有维数这个属性。 


5、列表(List) :

列表可以用list函数创建,方法与创建数据框类似。它对其中包含的对象没有什么限制。和data.frame()比较,缺省值没有给出对象的名称;用前面的向量xy举例:

> L1 <- list(x, y); L2 <- list(A=x, B=y)
> L1
 [[1]]
[1] 1 2 3 4

[[2]]
[1] 2 3 4

 > L2
$A
[1] 1 2 3 4

$B
[1] 2 3 4

 > names(L1)
 NULL
> names(L2)
[1] "A" "B"

6、时间序列(Time-series) :

函数ts可以由向量(一元时间序列)或者矩阵(多元时间序列)创建一个ts型对象,并且有一些表明序列特征的选项(带有缺省值),它们是:

     ts(data = NA, start = 1, end = numeric(0), frequency = 1,
        deltat = 1, ts.eps = getOption("ts.eps"), class, names)

data    一个向量或者矩阵

start    第一个观察值的时间,为一个数字或者是一个由两个整数构成的向量

end     最后一个观察值的时间,指定方法和start相同

frequency 单位时间内观察值的频数(频率)

deltat   两个观察值间的时间间隔(例如,月度数据的取值1/12);frequencydeltat必须并且只能给定其中之一

ts.eps   序列之间的误差限。如果序列之间的频率差异小ts.eps则认为这些序列的频率相等。

class   对象的类型;一元序列的缺省值是"ts",多元序列的缺省值是c("mts", "ts")

names 一个字符型向量,给出多元序列中每个一元序列的名称;缺省为data中每列数据的名称或者Series 1

ts创建时间序列的一些例子:

> ts(1:10, start = 1959)
Time Series:
Start = 1959
End = 1968
Frequency = 1
 [1]  1  2  3  4  5  6  7  8  9 10
> ts(1:47, frequency = 12, start = c(1959, 2))
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1959       1   2   3   4   5   6   7   8   9  10  11
1960  12  13  14  15  16  17  18  19  20  21  22  23
1961  24  25  26  27  28  29  30  31  32  33  34  35
1962  36  37  38  39  40  41  42  43  44  45  46  47
> ts(1:10, frequency = 4, start = c(1959, 2))
     Qtr1 Qtr2 Qtr3 Qtr4

1959    1 2 3
1960 4 5 6 7
1961 8 9 10

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值