zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然 R语言开发学习:导入数据

    2.3.6 导入 SPSS 数据
    IBM SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc
    包中的spss.get()函数。函数spss.get()是对read.spss()的一个封装,它可以为你自动设
    置后者的许多参数,让整个转换过程更加简单一致,最后得到数据分析人员所期望的结果。
    首先,下载并安装Hmisc包(foreign包已被默认安装):
    install.packages("Hmisc") 
    然后使用以下代码导入数据:
    library(Hmisc) 
    mydataframe <- spss.get("mydata.sav", use.value.labels=TRUE) 
    这段代码中,mydata.sav是要导入的SPSS数据文件,use.value.labels=TRUE表示让函数
    将带有值标签的变量导入为R中水平对应相同的因子,mydataframe是导入后的R数据框。
    2.3.7 导入 SAS 数据 
    R中设计了若干用来导入SAS数据集的函数,包括foreign包中的read.ssd(),Hmisc包中
    的sas.get(),以及sas7bdat包中的 read.sas7bdat()。如果你安装了SAS,sas.get()是
    一个好的选择。 
    比如说,你想导入一个名为clients.sas7bdat的SAS数据集文件,它位于一台Windows机器上的
    C:/mydata文件夹中,以下代码导入了数据,并且保存为一个R数据框: 
    library(Hmisc) 
    datadir <- "C:/mydata" 
    sasexe <- "C:/Program Files/SASHome/SASFoundation/9.4/sas.exe" 
    mydata <- sas.get(libraryName=datadir, member="clients", sasprog=sasexe) 
    libraryName是一个包含了SAS数据集的文件夹,member是数据集名字(去除掉后缀名 
    sas7bdat),sasprog是到SAS可运行程序的完整路径。有很多可用的选项;查看help(sas.get)
    获得更多细节。
    你也可以在SAS中使用PROC EXPORT将SAS数据集保存为一个逗号分隔的文本文件,并使用 
    2.3.2节中叙述的方法将导出的文件读取到R中。下面是一个示例:
    SAS程序:
    
    libname datadir "C:mydata"; 
    proc export data=datadir.clients 
     outfile="clients.csv" 
     dbms=csv; 
    run; 
    R程序:
    mydata <- read.table("clients.csv", header=TRUE, sep=",") 
    前面两种方法要求你安装了一套完整的可运行的SAS程序。如果你没有连接SAS的途径,函
    数read.sas7dbat()也许是一个好的候选项。这个函数可以直接读取sas7dbat格式的SAS数据
    集。这个例子的对应代码是:
    library(sas7bdat) 
    mydata <- read.sas7bdat("C:/mydata/clients.sas7bdat") 
    不像sas.get(),read.sas7dbat()忽略了SAS用户自定义格式。此外,这个函数用了明 
    显更多的时间来进行处理。尽管我使用这个包的时候比较好运,它依然应该被认为是实验性质的。
    最后,一款名为Stat/Transfer的商业软件(在2.3.12节介绍)可以完好地将SAS数据集(包括
    任何已知的变量格式)保存为R数据框。与read.sas7dbat()一样,它也不要求安装SAS。 
    2.3.8 导入 Stata 数据
    要将Stata数据导入R中非常简单直接。所需代码类似于:
    library(foreign) 
    mydataframe <- read.dta("mydata.dta") 
    这里,mydata.dta是Stata数据集,mydataframe是返回的R数据框。
    2.3.9 导入 NetCDF 数据
    Unidata项目主导的开源软件库NetCDF(Network Common Data Form,网络通用数据格式)
    定义了一种机器无关的数据格式,可用于创建和分发面向数组的科学数据。NetCDF格式通常用
    来存储地球物理数据。ncdf包和ncdf4包为NetCDF文件提供了高层的R接口。
    ncdf包为通过Unidata的NetCDF库(版本3或更早)创建的数据文件提供了支持,而且在
    Windows、Mac OS X和Linux上均可使用。ncdf4包支持NetCDF 4或更早的版本,但在Windows
    上尚不可用。
    考虑如下代码:
    library(ncdf) 
    nc <- nc_open("mynetCDFfile") 
    myarray <- get.var.ncdf(nc, myvar) 
    在本例中,对于包含在NetCDF文件mynetCDFfile中的变量myvar,其所有数据都被读取并保
    存到了一个名为myarray的R数组中。
    值得注意的是,ncdf包和ncdf4包最近进行了重大升级,使用方式可能与旧版本不同。另外,
    这两个包中的函数名称也不同。请阅读在线帮助以了解详情。
    2.3.10 导入 HDF5 数据
    HDF5(Hierarchical Data Format,分层数据格式)是一套用于管理超大型和结构极端复杂数
    据集的软件技术方案。rhdf5包为R提供了一个HDF5的接口。这个包在Bioconductor网站上而不
    是CRAN上提供。你可以用以下代码对之进行安装:
    source("http://bioconductor.org/biocLite.R") 
    biocLite("rhdf5") 
    像XML一样,HDF5格式超出了本书的内容范围。如果想学习更多相关知识,可访问HDF 
    Group 网站( http://www.hdf5group.org/ )。 由 Bernd Fischer 编写的 http://www.bioconductor.org/ 
    packages/release/bioc/vignettes/rhdf5/inst/doc/rhdf5.pdf是一个rhdf5包的优秀指南。
    2.3.11 访问数据库管理系统
    R中有多种面向关系型数据库管理系统(DBMS)的接口,包括Microsoft SQL Server、Microsoft 
    Access、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。其中一些包通过原
    生的数据库驱动来提供访问功能,另一些则是通过ODBC或JDBC来实现访问的。使用R来访问存
    储在外部数据库中的数据是一种分析大数据集的有效手段(参见附录F),并且能够发挥SQL和R

    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语句。这种灵活性赋予了你
    选择指定变量、对数据取子集、创建新变量,以及重编码和重命名现有变量的能力。
    2. DBI相关包 
    DBI包为访问数据库提供了一个通用且一致的客户端接口。构建于这个框架之上的RJDBC包
    提供了通过JDBC驱动访问数据库的方案。使用时请确保安装了针对你的系统和数据库的必要
    JDBC驱动。其他有用的、基于DBI的包有RMySQL、ROracle、RPostgreSQL和RSQLite。这些
    包都为对应的数据库提供了原生的数据库驱动,但可能不是在所有系统上都可用。详情请参阅
    
    
    CRAN(http://cran.r-project.org)上的相应文档。
     
    2.3.12 通过 Stat/Transfer 导入数据
    在我们结束数据导入的讨论之前,值得提到一款能让上述任务的难度显著降低的商业软件。
    Stat/Transfer(www.stattransfer.com)是一款可在34种数据格式之间作转换的独立应用程序,其中
    包括R中的数据格式(见图2-4)。

    2.4 数据集的标注
    为了使结果更易解读,数据分析人员通常会对数据集进行标注。这种标注包括为变量名添加
    描述性的标签,以及为类别型变量中的编码添加值标签。例如,对于变量age,你可能想附加一
    个描述更详细的标签“Age at hospitalization (in years)”(入院年龄)。对于编码为1或2的性别变量
    gender,你可能想将其关联到标签“male”和“female”上。
    2.4.1 变量标签
    遗憾的是,R处理变量标签的能力有限。一种解决方法是将变量标签作为变量名,然后通过位置下标来访问这个变量。考虑之前病例数据框的例子。名为age的第二列包含着个体首次入院 
    时的年龄。代码:
    names(patientdata)[2] <- "Age at hospitalization (in years)" 
    将age重命名为"Age at hospitalization (in years)"。很明显,新的变量名太长,不适 2 
    合重复输入。作为替代,你可以使用patientdata[2]来引用这个变量,而在本应输出age的地
    方输出字符串"Age at hospitalization (in years)"。很显然,这个方法并不理想,如果
    你能尝试想出更好的命名(例如,admissionAge)可能会更好一点。
    2.4.2 值标签
    函数factor()可为类别型变量创建值标签。继续上例,假设你有一个名为gender的变量, 
    其中1表示男性,2表示女性。你可以使用代码:
    patientdata$gender <- factor(patientdata$gender, 
     levels = c(1,2), 
     labels = c("male", "female")) 
    来创建值标签。
    这里levels代表变量的实际值,而labels表示包含了理想值标签的字符型向量。

  • 相关阅读:
    springboot---Shiro
    spring MVC 使用 modelAndView.setViewName("forward:*.action") 发送重定向
    数据库负载均衡、读写分离技术
    redis详解
    分布式--锁
    springboot---数据整合篇
    hadoop安装单机
    NIO系列之MINA
    JAVA中IO流模型BIO,NIO,AIO
    CPU-bound(计算密集型) 和I/O bound(I/O密集型)
  • 原文地址:https://www.cnblogs.com/tszr/p/11174642.html
Copyright © 2011-2022 走看看