2.3 数据输入
向R中导入数据的权威指南参见可在 http://cran.r-project.org/doc/manuals/R-data.pdf下载的R Data Import/Export手册
2.3.1 键盘
mydata <- data.frame(age=numeric(0), gender=character(0), weight=numeric(0))
#age=numeric(0):将创建一个有格式,但为空的变量
mydata <- edit(mydata)
#edit()必须赋值到一个目标,否则所有修改无效
fix(mydata) #等价写法
2.3.2 带分隔符的文本文件.txt
read.table()
#格式如下:
mydataframe <- read.table(file, header=logical_value,
sep="delimiter", row.names="names")
- 参数sep默认=" ",即分隔符可以为一或多个空格、制表符(\t)、换行符(\n)、回车符(\r);
- 字符型变量默认情况下转换为factor,当处理某些情况(如被调查者评论)时,可采取以下方法禁止转换:
- 设置选项:stringsAsFactors=FALSE
- 使用colClasses为每个列制定格式:如logical(逻辑型)、numeric(数值型)、character(字符型)、factor(因子)
通过连接(connection)来访问数据的机制:文件名参数
- 函数file():允许用户访问文件、剪贴板和C级别的标准输入。
- 函数gzfile()、bzfile()、xzfile()、unz():允许用户读取压缩文件。
- 函数url():能够让你通过一个含有http://、ftp://或file://的完整URL访问网络上的文件,还可以为HTTP和FTP连接指定代理。为了方便,(用""围住的)完整的URL也经常直接用来代替文件名使用。
- 更多详情,参见help(file)。
2.3.3 Excel数据
- 将EXCEL文件导出为.csv(以逗号分隔文件),用read.table(file)导入;
- 使用函数read.xlsx(file, n):导入.xlsx文件(实质是多个xml文件组成的压缩包)
library(xlsx)
workbook <- "/Users/Documents/myworkbook.xlxs" #“文件路径”
mydataframe <- read.xlxs(workbook, 1) #1为要导入的表格名称
- Win系统:RODBC包
#安装RODBC包
install.packages("RODBC")
#导入数据
library(RODBC)
channel <- odbcConnectExcel("myfile.xls")
mydataframe <- sqlFetch(channel, "mysheet")
odbcClose(channel)
- channel:是一个由odbcConnectExcel()返回的RODBC连接对象;
- mydataframe是返回的数据框;
- RODBC也可用于从Microsoft Access导入数据。
2.3.4 XML
XML包
2.3.5 网页数据抓取 Webscraping
- 结构简单的网页:先用readLines( )下载网页;后用grep( )/gsub( )处理;
- 结构复杂的网页:用RCurl包、XML包提取
2.3.6 SPSS
- foreign包 -> read.spss()
- Hmisc包 -> spss.get()
install.packages("Hmisc")
mydataframe <- spss.get("mydata.sav", use.value.labels=TRUE)
use.value.labels=TRUE:表示让函数将带有值标签的变量导入为R中水平对应相同的因子
???
2.3.7 SAS
- 旧版本
- foreign包 -> read.ssd()
- Hmisc包 -> sas.get()
- 新版本(9.1或更高)
- 在SAS中用PROC EXPORT储存为.csv格式文件后导入R
#SAS程序:
proc export data = mydata
outfile = "mydata.csv"
dbms = csv;
run;
#R:
mydata <- read.table("mydata.csv", header=TRUE, sep=" ")
- Stat/Transfer商业软件
2.3.8 Stata
library(foreign)
mydataframe <- read.dta("mydata.dta")
2.3.9 netCDF
- Unidata项目主导的开源软件库netCDF(network Common Data Form,网络通用数据格式)
- 常用领域:地球物理
- ncdf包、ncdf4包(Win不可用,支持netCDF4更早版本)
library(ncdf)
nc <- nc_open("mynetCDFfile")
myarray <- get.var.ncdf(nc, myvar)
2.3.10 HDF5
- HDF5(Hierarchical Data Format,分层数据格式):是一套用于管理超大型和结构极端复杂数 据集的软件技术方案。
- hdf5包
2.3.11 数据库
- ODBC接口
library(RODBC) #载入了RODBC包
myconn <- odbcConnect("mydsn", uid="Rob", pwd="aardvark") #通过一个已注册的数据源名称(mydsn)、用户名(rob)、密码(aardvark)打开了一个ODBC数据库连接
crimedat <- sqlFetch(myconn, Crime) #连接字符串被传递给sqlFetch,它将Crime表复制到R数据框crimedat中
pundat <- sqlQuery(myconn, "select * from Punishment") #对Punishment表执行SQL语句select并将结果保存到数据框pundat中
close(myconn) #关闭连接
- DBI相关包
- RJDBC包:使用时请确保安装了针对你的系统和数据库的必要JDBC驱动
- 其他:RMySQL、ROracle、RPostgreSQL、RSQLite(都为对应的数据库提供了原生的数据库驱动,但可能不是在所有系统上都可用)
- 详情请参阅 CRAN(http://cran.r-project.org)上的相应文档