R语言读取外部数据

使用R语言作数据分析时,往往需要读入外部数据,常用的外部数据有文本文件型、电子表格型和数据库型。本文将对以上三种外部数据的读取做一个汇总。


一、读取文本文件

一般采用read.table()函数和read.csv()函数实现文本文件数据的读取,对于这两个函数有几个重要的参数:

file指定外部文件的路径和文件名;

header指定是否将原数据的第一行最为字段名,read.table()函数默认设置为FALSE,而read.csv()函数默认设置为TRUE;

sep指定字段之间的分割符,read.table()函数默认设置为空格"",而read.csv()函数默认设置为逗号,;

除此,read.table()函数还可以设置读入数据集的行名、列名、字符串是否转换为因子、缺失值的形式等,详细可查看read.table()函数的帮助文档。


我的电脑桌面中有两个文本文件,即iris.csv和iris.txt。文件打开如下图:

0?wx_fmt=png

现在通过read.table()函数和read.csv()函数读取这两个文件:

iris1 <- read.table(file = 'C:\\Users\\admin\\Desktop\\iris.txt', col.names = c('x1','x2','x3','x4','y'))

head(iris1)

0?wx_fmt=png
#我比较喜欢将file设置为file.choose(),这样可以弹出选择文件的窗口,而不用写下文件路径和文件名了。

iris2 <- read.table(file = file.choose(), col.names = c('x1','x2','x3','x4','y'))

0?wx_fmt=png

head(iris2)

0?wx_fmt=png

#对于csv格式的数据,我比较喜欢使用read.csv()函数

iris3 <- read.csv(file = file.choose())

head(iris3)

0?wx_fmt=png

二、读取电子表格

工作中也有很多数据是存放在EXCEL中的,对于这类数据的读取一般有两种方法,要么将xls或xlsx格式的数据转换为csv,用read.csv()函数读取;要么直接使用xlsx软件包中的read.xlsx()函数直接读取电子表格数据。有关xlsx软件包的下载可参考公众号中《R加载xlsx包报错的解决方法》一文。


library(xlsx)

iris4 <- read.xlsx(file = file.choose(), sheetIndex = 1)

head(iris4)

0?wx_fmt=png

三、读取数据库数据

读取数据库数据应该是日常工作中最频繁的,常用的数据库有SQL Server、MySQL和Oracle等数据库,本文将以读取SQL Server和MySQL数据库数据为例。

读取SQL Server数据库中的数据

使用RODBC包可以方便快捷的读取SQL Server数据库,但在读取之前需要对计算机的数据源进行配置,过程如下:

控制面板-->管理工具-->数据源(ODBC)-->添加-->选择对应的数据库驱动-->点击完成并填写数据源名称、服务器等信息。

0?wx_fmt=png
0?wx_fmt=png

完成以上步骤后就可以使用R连接到数据库了。

#加载RODBC包

library(RODBC)

#建立连接

connect <- odbcConnect(dsn = 'test',uid = "", pwd = "")

#读取数据

my.data <- sqlQuery(channel = connect, query = 'select * from quantile')

head(my.data)

0?wx_fmt=png
#也可以将现有的数据集反写到数据库中

sqlSave(channel = connect, dat = iris, tablename = 'iris', rownames = FALSE, append = TRUE)

close(connect)

0?wx_fmt=png


读取MySQL数据库中的数据

如果电脑中安装的MySQL数据库自带ODBC驱动器,那么读取数据的方式与读取SQL Server数据库是完全一致的;如果电脑中安装的MySQL数据库不含ODBC驱动器,那么有两种解决办法,一个是到MySQL官网下载一个ODBC驱动器(http://dev.mysql.com/downloads/connector/odbc/),另一种则直接使用R中的RMySQL包读取数据。

现在需要读取MySQL数据库中的iris数据集,操作如下:

0?wx_fmt=png
#加载RMySQL包

library(RMySQL)

#建立连接

connect <- dbConnect(drv = MySQL(), user = 'root', password = 'snake', dbname = 'test', host = 'localhost')

res <- dbSendQuery(conn = connect, statement = 'select * from iris')

iris5 <- fetch(res = res, n = -1)

head(iris5)

0?wx_fmt=png

总结:文中涉及到的R包和函数

read.table()

read.csv()

head()

xlsx包

read.xlsx()

RODBC包

odbcConnect()

sqlQuery()

sqlSave()

RMySQL包

dbConnect()

dbSentQuery()

fetch()

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值