R语言-数据对象与运算(1)

数据对象与类型的R语言表示

1.mode()函数:输出数据类型;length()函数:输出数据长度
2.可以用指数形式表示数据,如:2e+10,2e-10
3.Inf:表示正无穷;-Inf:表示负无穷;NAN:表示不是数的值
4.加双引号表示字符型数据;\“”:表示引用双引号
5.数据对象类型:
向量:数值,字符,复数,逻辑
因子:数值,字符
数组:数值,字符,复数,逻辑
矩阵:数值,字符,复数,逻辑
数据框:数值,字符,复数,逻辑
时间序列:数值,字符,复数,逻辑
列表:数值,字符,复数,逻辑,函数,表达式

数据对象构造

  1. 向量的构造
    向量:由相同基本类型元素组成的序列
    向量的赋值:
    1.1函数c()赋值
x=c(1,3,5,7)

1.2函数assign()赋值

assign("y",c(1,3,5,7))

1.3用“:”可以产生步长为1的序列

z=1:5

1.4函数seq(from,to,by):产生有规律的各种序列,by表示步长

seq(10,1,-1)

1.5函数rep(x,times)

rep(c(1,3),3)

表示将数组(1,3)重复三次
输出结果:

[1] 1 3 1 3 1 3
  1. 矩阵的构造
    矩阵(二维数组):用行和列排列的长方形数据表格,通常行表示不同的对象,列表示不同的变量。
    函数matrix():构造矩阵
    matrix(data=NA,nrow=1,ncol=1,byrow=False,dimnames=NULL)
    其中,data为向量数据,nrow为行数,ncol为列数,byrow默认为false,表示生成矩阵的数据按列放置,dimname默认为空,表示矩阵行和列的名字。
matrix(c(1,3,5,7,9,11,13,15),4,2)

输出结果:

     [,1] [,2]
[1,]    1    9
[2,]    3   11
[3,]    5   13
[4,]    7   15

3.数组的构造
数组:带有多个下标、类型相同元素的集合。
函数array():构造数组
array(x=NA,dim=length(data),dimnames=NULL)

array(1:20,c(2,2,5))

输出结果:

, , 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

4.列表的构造
列表:是特殊的对象集合,列表中包含的对象又叫做成分,成分可以是不同的类型。
list(变量1=分量1,变量2=分量2,…)

list(name="Fred",wife="Mary",no.childern=3,child.ages=c(4,7,9))

输出结果:

$name
[1] "Fred"

$wife
[1] "Mary"

$no.childern
[1] 3

$child.ages
[1] 4 7 9

5.数据框的构造
数据框:矩阵形式的数据,各列可以是不同类型的数据。即可以看作是一种矩阵的推广,又可以看作是特殊的列表。
data.frame(data1,data2,…)

data.frame(name=c("Alice","Becka","James","Jeffrey","John"),sex=c("F","F","M","M","M"),age=c(13,13,12,13,12),height=c(56.5,65.3,57.3,62.5,59),weight=c(84,98,83,84,99.5))

输出结果:

     name sex age height weight
1   Alice   F  13   56.5   84.0
2   Becka   F  13   65.3   98.0
3   James   M  12   57.3   83.0
4 Jeffrey   M  13   62.5   84.0
5    John   M  12   59.0   99.5

6.时间序列的构造
时间序列:可使用函数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为两个观察值之间的时间间隔(frequency和deltat必须并且只能指定其中一个);ts.eps为序列间的误差限;class为对象的类型;names为字符型向量,给出多元序列中每个一元序列的名称,若缺省则为data中每列数据名称或者series1,series2,…)

ts(matrix(rpois(36,5),12,3),start=c(1961,1),frequency=12)

输出结果为:

         Series 1 Series 2 Series 3
Jan 1961        8        5        7
Feb 1961        6        1        2
Mar 1961        4        8        3
Apr 1961        6        7        8
May 1961        3        6        8
Jun 1961        5        3        7
Jul 1961        1        8        4
Aug 1961        6        5        4
Sep 1961        4        3        5
Oct 1961        8        8        2
Nov 1961        3        5        7
Dec 1961        8        5        6

7.因子与有序因子
分类数据是把数据分成不同的水平或因子。

  • facter(x,levels=sort(unique(x),na.last=TRUE),labels,exclude=NA,ordered=FALSE)把一个向量编码成一个因子。
    sex=c("f","m","f","f","m"); factor(sex)
    输出结果:
[1] f m f f m
Levels: f m
  • gl(n,k,length=n*k,labels=1:n,ordered=FALSE)产生因子。n表示水平数,k表示每个水平重复的次数,lenghth表示结果的长度,labels是一个n维向量,表示因子水平,ordered表示是否为有序因子。
> gl(3,5)
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> gl(3,1,9)
[1] 1 2 3 1 2 3 1 2 3
Levels: 1 2 3
  • expand.grid()创建一个数据框,实现把各参数的各水平完全搭配。
> expand.grid(h=c(60,80),w=c(100,300),sex=c("Male","Female"))
   h   w    sex
1 60 100   Male
2 80 100   Male
3 60 300   Male
4 80 300   Male
5 60 100 Female
6 80 100 Female
7 60 300 Female
8 80 300 Female
  • ordered()生成有序因子
> ordered(c("B","C","D","B","A","D","A"),levels=c("D","C","B","A"))
[1] B C D B A D A
Levels: D < C < B < A

猜你喜欢

转载自blog.csdn.net/qq_21389513/article/details/89713554