首页 > 代码库 > R语言之数据类型和数据结构

R语言之数据类型和数据结构

一、数据类型

1.数字
分为整数和小数,整数用integer表示,小数用numeric表示,如果一组数据同时包含整数与小数,那么R会将整数转换为小数,即添加一个小数位
2.文本
分为普通文本和因子。普通文本用character表示,因子用factor表示。
普通文本就是通常所说的文字符号,带有引号标记,因子则没有引号标记,

可以使用as.xx函数对上述类型进行转换
======================================

二、数据结构

数据可能以各种形式和结构存在,并且每一种都有特殊用途

1.、常数
R中内置了5种确定常数数值的对象,分别是:
LETTERS:包含大写字母A-Z
letters:包含小写字母a-z
month.abb:包含所有月份的英文缩写形式
month.name:包含所有月份的全拼形式
pi:π的取值

2、向量(矢量)
一维结构的数据,可以是数字或文本。向量可以用vector函数启动,用length函数定义长度,用mode函数定义类型,用names函数显示和定义名称
如:vector(mode="logical",length=4),定义一个长度为4的逻辑向量。

> x<-1:10
> names(x)
> names(x)<-letters[1:10]

定义一个向量x,显示向量名字,默认情况下为null,将向量x中的元素名称定义为前十个小写字母。

3、矩阵
特征和数据框比较像,不同点是:只能有二维、不能使用$选择变量、数据内容只能包含一种类型、首列为个案名称。
可以使用matirx函数定义矩阵,也可以通过它把一个向量转换成矩阵并通过dimnames对行列命名。
可以使用det函数计算其行列式,使用solve函数计算其逆矩阵
如:
> x<-matrix(data = http://www.mamicode.com/1:4,nrow=2,ncol=2,byrow = TRUE,dimnames=list(c("r1","r2"),c("c1","c2")))
> det(x)
> solve(x)
定义一个由向量1:4转换的矩阵,并定义行列名,求行列式和逆矩阵

4、列表
如果要想将不同类型的数据结构和数据类型都放在同一个对象中,那么需要使用列表,列表的官方定义为:由有序对象集合组成的对象。

列表可以使用list函数实现。特征是像一系列独立命名的向量,每一个名称都用$开头,可以使用$选择变量

可以使用stack()函数将列表转换为数据框,它的反向操作是unstack()函数

> a<-letters
> b<-1:10
> c<-matrix(1:6,nrow = 2)
> z<-list(a=a,b=b,c=c)
> class(z)
> class(z$a);class(z$b);class(z$c)

定义三个对象,将其放在列表z中,并通过class查看对象类型。

5、数据框
数据框也可以存储不同类型的对象,特征有多维结构,区别是首列是序号,不显示个案名称,每个变量名为单独一列,可以使用$选择变量
可以通过data.frame函数实现,用varible.names输出变量名,sapply函数输出变量类型,
如:
> x<-c(2,3,4);y<-letters[1:3]
> df1<-data.frame(x,y)
> variable.names(df1)
> sapply(df1,class)
定义两个变量x,y将其放在数据框df1中,并显示其变量名和变量类型。

6、表

这里指的频数表,在实际应用中,我们经常需要使用频数格式的数据,通常使用的是expand函数和xtabs函数
如:
Class.Level <- c("1st","2nd","3rd", "Crew")
Sex.Level <- c("Male", "Female")
Age.Level <- c("Child", "Adult")
Survived.Level <- c("No", "Yes")
Data.Level <- list(Class = Class.Level, Sex = Sex.Level,
Age = Age.Level, Survived = Survived.Level)
T.Table = expand.grid(Class = Class.Level, Sex =
Sex.Level, Age = Age.Level, Survived = Survived.Level)
T.freq <- c(0,0,35,0,0,0,17,0,118,154,387,670,4,13,89,3,
5,11, 13,0,1,13,14,0,57,14,75,192,140,80, 76,20)
T.Table <- cbind(T.Table, count=T.freq)
xtabs(count~ Class + Sex + Age + Survived , data = http://www.mamicode.com/
T.Table)

我们先定义四个拥有不同水平的变量,然后将其放在list中,接下来用expand.grid创建一个数据框,和data.frame不同,expand.grid创建的数据框内容是所有变量各水平的全面组合。接下来定义频数变量,再使用cbind函数加在数据框中,最好使用xtabs函数列出各个变量各水平组合的二维频数表。

=============================================
三、检查数据结构

可以使用str()函数检查某个对象的数据结构

=============================================
四、查看和删除所加载的对象
1、查看加载的对象
ls()函数可以列出所有已加载的对象,也可以使用匹配搜索ls(pattern="b")这其中可以使用通配符
2.移除加载的对象
可以使用rm()函数或removw()函数移除
rm(list=ls())可以使用ls生成一个list清单,并配合rm的list选项进行批量移除


R语言之数据类型和数据结构