R语言——获取数据2

参考资料:学习R

3、读取二进制文件

        很多软件都把它们的数据存储为二进制格式。二进制格式通常要比它们的文本格式要小,因此使用二进制格式的性能可能会更好,不过这是以可读性为代价的。

(1)读取Excel文件

        xlsx包是基于Java的跨平台包。它提供了读取Excel文件的函数:使用read.xlsx和read.xlsx2导入电子彪子表格。使用read.xlsx2的运行速度更快。下例中,colClasses参数将决定数据框中每列的类型。 这并非是强制的,但这样做可以免去日后再处理数据的麻烦。

library(learningr)

library(xlsx)
bike_file<-system.file(
  "extdata",
  "Alpe.d.Huez.xls",
  package="learningr"
)
print(bike_file)
bike_data<-read.xlsx2(
  bike_file,
  sheetIndex=1,
  startRow=2,
  endRow=38,
  colIndex=2:8,
  colClasses=c(
    "character","numeric","character","integer",
    "character","character","character"
  )
)
head(bike_data)

        除此之外,RExcel和excel.link包使用COM连接从R中控制Excel,WriteXLS使用Perl写入Excel文件。

        与read.xlsx2相对应的函数是write.xlsx2。它的工作方式与write.csv相同,它的参数为一个数据框和文件名。

(2)读取SAS、Stata、SPSS和MATLAB文件

        如果我们正在与其他组织的统计人员合作,他们可能会像我们发送一些行其他统计软件中生成的文件。foreign包中包含了使用read.ssd读取SAS永久数据集、使用read.dta读取Stata的DTA文件、使用read.spss读取SPSS数据文件的方法。这些文件都可以用write.foreign写入文件。

        MATLAB的二进制数据文件可以使用R.matlab包中的readMat和writeMat分别读写。

(3)读取其他文件类型

        R可以使用h5r包(以及在Bioconductor中的rdhf5包)读取分层数据格式V5[HDF5]文件,亦可使用ncdf包读取网络通用数据格式。

        它可以通过jpeg、png、tiff、rtiff和readbitmap包读取光栅图像格式。

        它可以使用Bioconductor中的包来读取各种基因组数据格式。
4、WEB数据

        R 有很多种方式可以从网络源导入数据并以编程的方式检索数据, 这就使数据处理的工作事半功倍。

(1)拥有API的网站

        有一些包可通过网站的API接口直接下载数据到R系统。世界银行已在其网站上公开了它的世界发展指标数据, WDI 包可以让你轻松地在 R 中将这些数据导入。

        SmarterPoland包提供了类似的功能,它封装了波兰政府的数据。使用quantmod包可以访问股票行情(默认是雅虎的数据, 也可以选择其他几个数据源)。

(2)抓取网页

        R有内置的web服务器,所以某些需要读取数据的函数默认是带有网络访问功能的。read.table(以及其衍生函数,例如read.csv)接受一个URL作为参数(而不是一个本地文件),它会在导入数据之前将副本下载到一个临时文件中。

salary_url<-"http://www.justinmrao.com/salary_data.csv"
salary_data<-read.csv(salary_url)
str(salary_data)

        由于通过互联网访问一个大文件时速度可能会很慢,所以经常使用该文件,更好地策略是用download.file对要下载的文件创建一个本地副本,然后再导入。

salary_url<-"http://www.justinmrao.com/salary_data.csv"
local_copy<-"my local copy.csv"
download.file(salary_url,local_copy)
salary_data<-read.csv(local_copy)
head(salary_data)

        其他跟高级的网页访问方法可以在RCurl包中找到,它能访问libcurl网络客户端接口程序库,尤其是我们要访问的数据包含在HTML或XML页面中时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值