R语言之创建数据集

原创 2015年11月19日 18:35:22

R语言中用于存储数据的结构有:标量、向量、数组、数据框和列表。

在R中,对象是指可以赋值给变量的任何事物,包括常量、数据结构、函数、甚至图形。因子(factor)是名义型变量或有序型变量。

1.数据结构

向量

向量是用于存储数值型、字符型或逻辑性数据的一位数组。函数c()可以用来创建向量。标量是只含有一个元素的向量。

已定义的向量对象加上方括号,在方括号中给定元素所在的位置的数值,就可以访问向量中该位置的元素。

矩阵

矩阵是一个二维数组,每个元素都具有相同的属性。函数matrix()用来创建矩阵。

格式为:A <- matrix(vector,nrow=number_of_rows,ncol=number_of_cols,byrow=true/false,dimnames=list(rownames,colnames))

其中vector包含了矩阵的元素,nrow和ncol分别表示行和列的维数,dimnames包含行名和列名(rownames,colnames也分别为向量)。byrow是指按行或者按列填充,默认是按列。

同样可以使用A[i,j]的形式来获得矩阵A中第i行第j列的数据。A[i,]表示选取第i行的数据,A[,j]表示选取第j列的数据。

数组

类似于矩阵,但维数可以大于2。函数array()可用来创建数组。格式如下:

A <- array(vector,dimensions,dimnames=list())

其中vector包含了数组中的数据,dimensions是一个数值型向量,各个维度的最大值,dimnames是个维度名称的列表。

数据框

数据框中科已包含不同列可以有不同的属性(类似于数据库中的表)。可以通过函数data.frame(col1,col2,col3,...)。 col1,col2,col3...可以为不同的类型

数据框中元素的选取:

A[1:2]----------表示选取数据框A的前两列

A[c(col_names,...)]------------------选取多列,向量中为个列的名称

A$col_names--------------------选取数据框的col_names列


attach()函数可以将数据框添加到R的搜索路径中。R在遇到一个变量名后,将检查搜索路径中的数据框,以定位到这个变量。(提案件后就不用使用dataframe$col_names的形式读取某一列,直接用列名即可)

detach()函数将数据框从搜索路径中移除

当有同名的队形的时候,直接使用attac()h和detach()函数回出现问题,变量名的智慧是更早被定义的值。此时可以使用函数with()

例如  with(A, {

col_names1

col_names2})   其中A 为数据框

函数with()的局限性在于,复制仅在在此函数的括号内生效。

当需要在函数with()外使用是,采用特殊赋值符号  <<-  代替标准复制符号

eg:

  with(A, {

colname1 <<- col _names1

colname2 <- col _names1}) 

在with()外时,clname1是有效的  ,colname2是无效的。

相比于attach(),更多建议使用with()函数

因子

类别(名义型)变量和有序类别(有序型)变量在R中称为因子。

函数factor() 以一个整数向量的形式存储类别值,整数的取值范围是[1...k](k是名义型变量中唯一值的个数),同事一个由字符串(原始值)组成的内部变量将映射到这些整数上。

eg:名义型

diabetes <- c("type1","type2","type1")  则  语句diabetes <- factor(diabetes)  将次向量映射为类似(1,2,1),内部关联为1=type1,2=type2。针对向量diabetes 进行任何的分析都会将其作为名义型变量对待。

有序型

函数factor()需要制定参数order=TRUE。 status <- c("poor","improved","Excellent","Poor")  语句 status <- factor (status,order=TRUE),会将向量编码为(3,2,1,3),内部关联为1=Excellent,2=improved,3=poor。(字符型变量,因子的水平默认依字母顺序创建,故以上的顺序为3,2,1,3),也可以指定排序 status <- factor (status,order=TRUE,levels=c("poor","improved","Excellent"))

列表

列表list就是一些对象的有序集合。列表允许整合若干对象到单个对象名下。例如一个列表中可能包含若干向量、矩阵、数据框、甚至其他列表的组合。

函数list()用来创建列表,形式如下

A <- list(object1,object2,....)或者A <- list(name1=object1,name2=object2,....)


下图为R中的数据结构:



注:

在R中,对象名称中的句点(.)没有特殊意义,但是符号$代表的含义却不同于其他语言,即制定一个对象中的某些部分。

R中的下标是从1开始的

变量是无法被声明的。他们在首次被赋值时生成。

2.数据的输入

R 中可导入的数据源很多,如下图:


使用键盘输入数据

步骤如下:

(1)创建一个空数据框(或 矩阵),其中变量名和变量的模式需与理想中的最终数据集一致;

(2)针对这个数据对象调用文本编辑器,输入数据,并将结果保存在此数据对象中

eg:  A <- data.frame(age=numeric(0),gender=character(0),weight=numeric(0))

          A <- edit(A) 

需要修改数据时,可在此调用函数mydata <- edit(A)或者使用fix(A)

直接从键盘输入数据使用于小数据集

对于大的数据集,可以考虑从其他数据源导入,以下介绍几种从其他数据源导入数据的方法。

从带分隔符的文本文件导入数据

函数read.table()可以从带分隔符的本本文件中导入数据。可以读入一个表格文件并将其保存为一个数据框。使用格式如下:

mydata <- read.table(file, header=logical_value, sep="delimiter", row.names="name")

其中file是一个带分隔符的文本文件,header是一个表明首行是否包含变量名称的逻辑值(TRUE/FALSE),sep用来指定数据的分隔符(逗号,回车,制表符等,默认为空格),row.names是一个可选参数,用来指定一个或多个表示行标识符的变量。

一般默认将字符型变量转换为因子,若不想转换时,使用参数stringsAsFactors,另外一种方法,是使用colClasses参数为每一列指定类型。

读入EXCLE数据

两种方法:

(1) 将Excle文件转换成.csv文件,使用函数read.table()(即同上述方法)读入数据

(2)使用RODBC包访问Excle文件(不能读.xlsx文件)。

      先确保已经安装RODBC包(install.packages("RODBC"))

      读入数据的代码如下:

     library(RODBC) 
     ch <-   odbcConnectExcel("文件名")   # 若文件不再当前的工作目录,就要写上文件路径
     madata <- sqlFetch(ch,"工作表名称")
     odbcClose(ch)

      .xlxs文件的读取使用read.xlsx()函数,需安装xlsx包,使用这个包要确保电脑安装了java,不然载入包的时候会提示rJava包不能载入。

     read.xlsx(file,n)  其中file为文件名,n为xlsx中的第n个工作表。示例如下

     library(xlsx)
     workbook <- "F:/aa.xlsx"
     mydata <- read.xlsx(workbook ,1)   
     
XML数据的读取


读入SPSS数据    

通过foreign包中的read.spss()函数导入,或者Hmisc包的spss.get()函数导入。

示例:

library(Hmisc)
mydata <- spss.get("aa.sav",use.value.lables=TRUE)  #use.value.lables=TRUE表示让函数将带有值标签的变量导入为R中水平对应相同的因子。


导入SAS数据

在对于SAS9.1以上的版本,先使用PROC EXPORT将SAS数据集保存为一个逗号分隔符的文本文件,再使用从带分隔符的文本文件导入数据的方法读取到R中

<pre name="code" class="plain">SAS程序
proc export data = mydata
        outfile="mydata.csv"
        dbms=csv;
run;
R 程序
mydata <- read.table(“mydata.csv”, header=logical_value, sep=",")


3.访问数据库管理系统

R中有多种面向关系型数据库管理系统的接口,包括SQL Server、Acess、MySql、Oracle、DB2、Sybase、SQLite、Teradata、PostgreSQL。一些包通过原生的数据哭驱动来提供访问功能,另一些则是通过ODBC或JDBC来实现。

ODBC接口

在R中通过RODBC包访问一个数据库比较流行,该方式允许R连接到任意一种ODBC驱动的数据库。

R中RODBC包中包含的函数有

RODBC包允许R和一个通过ODBC连接的SQL数据库之间进行双向通信。即R不仅可以读取数据库的数据,也可以修改数据库中的数据。·

举例,假设要读入一个数据库中的标A和B,程序如下

library(RODBC)
ch <- odbcConnect("mydsn",uid="Rob0,pwd="asb123") mydsn为数据源名称,uid为数据库用户名,pwd为密码
TA <- sqlFetch(ch ,A)
TB <- sqlQuery(ch ,"select * from B")
close(ch) 



函数factor()可以为类别型变量创建值标签 

举例:数据框patientdata中的gender变量,1表示男,2表示女,代码如下

<pre name="code" class="plain">patientdata$gender <- factor( patientdata$gender ,
                              levels = c(1,2),
                              labels = c("male","female"))


常用的处理数据对象的函数




相关文章推荐

R语言-创建数据集

2.2.1向量 向量是用于存储数值型、字符型火逻辑型数据的一维数组。 > a > a [1] 1 2 5 3 6 2 4 > a[3] [1] 5 > a[c(1,2,3)] [1] 1 2 5 >...

R语言入门之创建数据集——向量、矩阵、数组、数据框和列表

摘要随着大数据的火爆发展,适合数据分析及生成图表的R语言也在“最受欢迎的编程语言”中上升到了17位。R语言的种种特性令其十分易于进行数据分析,并因其能通过简短的代码生成一目了然的图令众多数据分析师垂涎...

R:创建列表(list)

向量的元素要求都是同类型的,而列表(list)与向量不同,可以组合多个不同类型的对象。列表在R中扮演着一个至关重要的角色,是数据框和面向对象编程的基础。     列表是R的数据类型中最为复杂的一种。...
  • thoixy
  • thoixy
  • 2014年10月27日 09:06
  • 6648

R语言学习二(包与数据集)

R语言安装包 什么是R语言的包? 我们可以把它视为一种扩展R基本功能的机制,包本身也集成了众多的函数。在使用R的过程中如果我们要使用某些函数,而当前R里面没有的话,我们通常可以去查找那些与其相关的包...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

如何查看R中可获取的数据集有哪些?

Once you start your R program, there are example data sets available within R along with loaded pack...

R语言中的数据集

R语言中的数据存储形式主要有以下几种方式 数组,向量,矩阵,数据框,列表 R语言中的可以处理的数据类型有以下几种方式 数值类型,字符类型,逻辑类型,原声类型(二进制类型),复数类型 数值类型 包括 实...

人工神经网络之乳腺癌识别

 人工神经网络是一种类似于大脑神经突触连接的结构进行信息处理的数学模型,由大量的输入层节点、隐藏层节点和输出层节点连接构成。其构造类似于下图: 上图中明确显示了输入层、隐藏层和输出层,红框...

用R语言做回归分析_iris数据集/longley数据集

机器学习课程2  回归分析 【题目1】 使用R对内置鸢尾花数据集iris(在R提示符下输入iris回车可看到内容)进行回归分析,自行选择因变量和自变量,注意Species这个分类变量的处理方法。 ...

R语言学习笔记 - 创建数据集

我们需要以数据科学家的角度来学习R语言,需要思考如何才能成功的处理、分析和理解数据。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R语言之创建数据集
举报原因:
原因补充:

(最多只允许输入30个字)