• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

(三)R语言-从数据源获取数据

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

R语言有很多种获取从数据源(有手动输入、CSV、Excel、JSON、XML、NetCDF、HDF5、SPSS、SAS、Stata这些数据源等)获取数据的方式,下面介绍常用的几种:

1. 手动录入

数据量少,可以采用这种方式:

1.1 先创建对象,然后调用<对象名> <- edit(<对象名>)或fix(<对象名>)来进行增加数据:

输入数据:

数据结果:

1.2 直接创建变量并同时初始化,然后调用read.table()读取:

这种方式对于初学者可能会多用一些,实际很少用的。

2. 导入Excel的数据

读取Excel需要安装xlsx、xlsxjars、rJava包,因为涉及Java,因此需要Java环境也配置好了:

安装后发现安装过程有如下错误:

提示告诉我们,如果确认JAVA环境配置没问题,用管理员用户执行"R CMD javareconf",现在执行以下:

重新加载R语言环境, 单独安装rJava包试下,报如下错误:

还是不行,囧~~~~先不用xlsx包了,后面知道怎么解决再弄了,换openxlsx,它不需要依赖rJava:

测试Excel文档的内容:

导入数据:

更多使用查help就行了。

3. 从网络获取数据

这里使用现在广泛使用的JSON数据:

这里使用一个接口获取的json数据如下:

可以看到,其结构如下,我们准备获取result对应的list:

{"result": [

{"type": "----", "name": "---"}

...

 ]}

安装"rjson"包:

测试获取数据:

返回的是一个列表数据。为了方便处理,可以转为数据框:

数据还是可以优化的,上面看到typeX和nameX一直重复,现在把所有name提取出来,其他的type都一样:

数据挖掘流程一开始都这样,从数据源获取数据到数据仓库,然后进行数据预处理为便于分析的数据(刚刚做的就是数据预处理),然后进行下一步的建模分析了。

4. 从数据库获取数据

可以通过原生的数据库驱动或ODBC/JDBC来从数据库获取数据,一般通过ODBC或JDBC连接是最常用的,因为不用针对每种数据库都写不一样的语句。

-------------------------------这里基于Windows10平台,Mac平台的遇到点问题,还没配置成功

安装RODBC包之前,需要先针对使用的系统和数据库类型安装和配置合适的ODBC驱动(这里下载: http://www.odbcmanager.net)

现在下载安装mysql的ODBC驱动(https://dev.mysql.com/downloads/connector/odbc/),安装后目录如下:


配置好后,接下来就是安装RODBC:


然后配置数据源:(控制面板 ---- 管理工具 ---- 出现如下窗口)

选择"ODBC数据源(64位)", 显示如下窗口:

选择"系统DSN",点击"添加",如下:

出现两种数据库的驱动,这里用MySQL(SQL Server类似),选择ANSI的,确定后弹出如下界面:

输入相关信息,点击"Test"测试一下,连接成功:

配置完成后,现在R加载ODBC库来连接数据库查看下数据:

通过MySQL WorkBench查看iHouse数据库数据如下:

测试:

使用sqlTables可以看数据库里有什么表,然后使用sqlFetch可以获取表的所有数据,使用sqlQuery可以输入有效地SQL语句进行指定查询。更多使用参考RODBC的文档即可。

最后,不使用,记得使用close()函数管理连接: close(my_con)。

5. 从本地获取数据

假设现在有这个数据文件:

如下读取:

6. 后面还可以从XML或其他数据源获取数据,因为目前我不常用,也就不测试了,用到再弄了。


实际对数据的处理是很灵活的,根据数据分析要求,从数据源获取,然后按需处理数据即可。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言学习(一)发布时间:2022-07-18
下一篇:
R语言:以年份为横轴,死亡人数为纵轴,分地区画折线图发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap