R语⾔导⼊导出数据的⼏种⽅式总结
关于R从不同数据源导⼊数据的⼏种⽅式总结
导出:
对于某⼀数据集导出⽂件的⽅法
导出例⼦:write.csv(data_1,file = "d:/1111111111.csv")
其中data_1是你的数据集,file是你的存储路径和要存储的名字
导⼊:
1 使⽤键盘输⼊数据
(1) 创建⼀个空数据框(或矩阵),其中变量名和变量的模式需与理想中的最终数据集⼀致;
(2)针对这个数据对象调⽤⽂本编辑器,输⼊你的数据,并将结果保存回此数据对象中。
在下例中,你将创建⼀个名为mydata的数据框,它含有三个变量:age(数值型)、gender(字符型)和weight(数值型)。然后你将调⽤⽂本编辑器,键⼊数据,最后保存结果。
>mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))
>mydata<-edit(mydata)
2 从带分隔符的⽂本⽂件中导⼊数据
你可以使⽤read.table()从带分隔符的⽂本⽂件中导⼊数据。此函数可读⼊⼀个表格格式
的⽂件并将其保存为⼀个数据框。其语法如下:
mydataframe<-
read.table(file.header=logical_value,sep="delimiter",row,names="name")其中,file是⼀个带分隔符的ASCII⽂本⽂件,header是⼀个表明⾸⾏是否包含了变量名的逻辑值(TRUE或FALSE),sep⽤来指定分隔数据的分隔符,row.names是⼀个可选参数,⽤以指定⼀个或多个表⽰⾏标识符的变量。
请注意,参数sep允许你导⼊那些使⽤逗号以外的符号来分隔⾏内数据的⽂件。你可以使⽤
sep="\t"读取以制表符分隔的⽂件。此参数的默认值为sep="",即表⽰分隔符可为⼀个或多个空格、制表符、换⾏符或回车符.
默认情况下,字符型变量将转换为因⼦。我们并不总是希望程序这样做(例如处理⼀个含有被调查者评论的变量时)。有许多⽅法可以禁⽌这种转换⾏为。其中包括设置选
项stringsAsFactors=FALSE,这将停⽌对所有字符型变量的此种转换。另⼀种⽅法是使⽤选项
colClasses为每⼀列指定⼀个类,例如logical(逻辑型)、numeric(数值型)、character (字符型)、factor(因⼦)。
函数read.table()还拥有许多微调数据导⼊⽅式的追加选项。
3 导⼊ Excle数据
读取⼀个Excel⽂件的最好⽅式,就是在Excel中将其导出为⼀个逗号分隔⽂件(csv),并使⽤前⽂描述的⽅式将其导⼊R中。在Windows系统中,你也可以使⽤RODBC包来访问Excel⽂件。
电⼦表格的第⼀⾏应当包含变量/列的名称。
⾸先,下载并安装RODBC包。
你可以使⽤以下代码导⼊数据:
>install.packages("RODBC")
library(RODBC)
channel<-odbcConnectExcel("myfile.xls")
execl函数 linuxmydataframe<-sqlFetch(hannel,"mysheet")
odbcClose(channel)
这⾥的myfile.xls是⼀个Excel⽂件,mysheet是要从这个⼯作簿中读取⼯作表的名称,
channel是⼀个由odbcConnectExcel()返回的RODBC连接对象,mydataframe是返回的数据框
注意:Excel2007使⽤了⼀种名为XLSX的⽂件格式,实质上是多个XML⽂件组成的压缩包。xlsx包可以⽤来读取这种格式的电⼦表格。在第⼀次使⽤此包之前请务必先下载并安装好。包中的函数read.xlsx()可将XLSX⽂件中的⼯作表导⼊为⼀个数据框。其最简单的调⽤格式是read.xlsx(file,n),其中file是Excel2007⼯作簿的所在路径,n则为要导⼊的⼯作表序号。
library(xlsx)
workbook<-"c:/mywoehbook.xlsx"
mydataframe<-read.xlsx(workbook,1)
从位于C盘根⽬录的⼯作簿myworkbook.xlsx中导⼊了第⼀个⼯作表.
4 从⽹页抓取数据
在Web数据抓取(Webscraping)的过程中,⽤户从互联⽹上提取嵌⼊在⽹页中的信息,并将其保存为R中的数据结构以做进⼀步的分析。完成这个任务的⼀种途径是使⽤函
数readLines()下载⽹页,然后使⽤如grep()和gsub()⼀类的函数处理它。对于结构复杂的⽹页,可以使⽤RCurl包和XML包来提取其中想要的信息。
5 导⼊SPSS数据
SPSS数据集可以通过foreign包中的函数read.spss()导⼊到R中,也可以使⽤Hmisc包中
的()函数。函数()是对read. spss()的⼀个封装,它可以为你⾃动设置后者的许多参数,让整个转换过程更加简单⼀致,最后得到数据分析⼈员所期望的结果。
⾸先,下载并安装Hmisc包(foreign包已被默认安装):
>install.packages("Hmisc")
>library(Hmisc)
>mydatframe<-("mydata.sav",use.value.lables="TRUE")
这段代码中,mydata.sav是要导⼊的SPSS数据⽂件,use.value.labels=TRUE表⽰让函数将带有值标签的变量导⼊为R中⽔平对应相同的因⼦,mydataframe是导⼊后的R数据框。
6导⼊SAS数据
R中设计了若⼲⽤来导⼊SAS数据集的函数,包括foreign包中的read.ssd()和Hmisc包中
的()。遗憾的是,如果使⽤的是SAS的较新版本(SAS 9.1或更⾼版本),你很可能会发现这些函数并不能正常⼯作,因为R尚未跟进SAS对⽂件结构的改动。个⼈推荐两种解决⽅案。
你可以在SAS中使⽤PROC EXPORT将SAS数据集保存为⼀个逗号分隔的⽂本⽂件,并使⽤下叙述的⽅法将导出的⽂件读取到R中:
SAS程序:
proc export data=mydata
outfile="mydata.csv"
dbms=csv
run;
R程序:
mydata<-read.table("mydata.csv",header=TRUE,sep=",")
7 导⼊Stata数据
> library(foreign)
> mydata<-read.dta("mydata.dta")
这⾥,mydata.dta是Stata数据集,mydataframe是返回的R数据框.
8导⼊netCDF数据
Unidata项⽬主导的开源软件库netCDF(network Common Data Form,⽹络通⽤数据格式)定
义了⼀种机器⽆关的数据格式,可⽤于创建和分发⾯向数组的科学数据。netCDF格式通常⽤来存储地球物理数据。ncdf包和ncdf4包为netCDF⽂件提供了⾼层的R接⼝。ncdf包为通过Unidata的netCDF库(版本3或更早)创建的数据⽂件提供了⽀持,⽽且在Windows、MacOS X和Linux上均可使
⽤。ncdf4包⽀持netCDF 4或更早的版本,但在Windows上尚不可⽤。
考虑如下代码:
在本例中,对于包含在netCDF⽂件mynetCDFfile中的变量myvar,其所有数据都被读取并保存到了⼀个名为myarray的R数组中。
9导⼊HDF5数据
HDF5(Hierarchical Data Format,分层数据格式)是⼀套⽤于管理超⼤型和结构极端复杂数据集的
软件技术⽅案。hdf5包能够以那些理解HDF5格式的软件可以读取的格式,将R对象写⼊到⼀个⽂件中。这些⽂件可以在之后被读回R中。这个包是实验性质的.
10访问数据库管理系统
R中有多种⾯向关系型数据库管理系统(DBMS)的接⼝,包括MicrosoftSQL
Server、MicrosoftAccess、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。使⽤R来访问存储在外部数据库中的数据是⼀种分析⼤数据集的有效⼿段(参见附录G),并且能够发挥SQL和R各⾃的优势。
1. ODBC接⼝
在R中通过RODBC包访问⼀个数据库也许是最流⾏的⽅式,这种⽅式允许R连接到任意⼀种拥
有ODBC驱动的数据库,其实⼏乎就是市⾯上的所有数据库。
第⼀步是针对你的系统和数据库类型安装和配置合适的ODBC驱动——它们并不是R的⼀部分。如果你的机器尚未安装必要的驱动,上⽹搜索⼀下应该就可以到。针对选择的数据库安装并配置好驱动后,请安装RODBC包。你可以使⽤命令
install.packages("RODBC")来安装它。
RODBC包中的主要函数列于表2-2中。
RODBC包允许R和⼀个通过ODBC连接的SQL数据库之间进⾏双向通信。这就意味着你不仅可
以读取数据库中的数据到R中,同时也可以使⽤R修改数据库中的内容。假设你想将某个数据库
中的两个表(Crime和Punishment)分别导⼊为R中的两个名为crimedat和pundat的数据框,
可以通过如下代码完成这个任务:
library(RODBC)
myconn<-odbcConnect("mydsn",uid="Rob",pwd="aardvark")
crimedat<-sqlFetch(myconn,Crime)
pundat<-sqlQuery(myconn,"select*from Punishment")
close(myconn)
这⾥⾸先载⼊了RODBC包,并通过⼀个已注册的数据源名称(mydsn)和⽤户名(rob)以及密码(aardvark)打开了⼀个ODBC数据库连接。连接字符串被传递给sqlFetch,它
将Crime表复制到R数据框crimedat中。然后我们对Punishment表执⾏了SQL语句select并将结果保存到数据框pundat中。最后,我们关闭了连接。函数sqlQuery()⾮常强⼤,因为其中可以插⼊任意的有效SQL语句。这种灵活性赋予了你选择指定变量、对数据取⼦集、创建新变量,以及重编码和重命名现有变量的能⼒。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论