Currently browsing category

R, Page 2

R语言下如何获得正确的文件编码

一个UTF-8的csv文件(可以在Windows下用notepad新建一个包含中文字符的文件,并在保存时编码选择UTF-8),在mac OS下读取没有任何问题,

同样的代码,在Windows下报错,

即使指定编码,输出仍然是乱码,

使用Linux下的file(检测文件编码及类型的程序),得到信息如下,

网络搜索后,找到正确的解决办法,

没有想到,Windows下读取个文件还这么麻烦,得知道确切的编码,那有没有办法自动侦测编码或者简化工作呢? 把Linux的file编译为Windows下可以执行的程序,这样可以通过命令后的方法先获得文件的编码,或者把file.exe和magic.mgc(用于判断文件类型和编码的数据库文件)一起丢进Windows目录,然后使用下面两个命令中的一个,

如果有多个文件,可以考虑把编码进行统一,推荐软件iconv 做批量编码转换。 当然你也可以下载笨重的Rtools(最新版本103M,包含了file,版本比较老,但不包含iconv)。 P.S. 网上寻找R语言版本的文件编码侦测包,寻找到了两个,wand 和 Ruchardet , wand其实就是基于file做了简单的封装,但不能区分UTF-8 与 UTF-8-BOM(当然可以通过description来获得正确的版本信息, …

R语言mapply应用一例

需求:求data frame下两列有交集的元素个数,例如,m2和m3存储的都是以逗号分割的字符串,现在求m2和m3的交集,

答案,

 

在Ubuntu下安装RPostgreSQL

在Windows上安装RPostgreSQL非常简单,

但同样都命令在Ubuntu(Linux)环境下就会遇到如下错误,

那是因为缺少PostgreSQL开发库,

P.S. R的PostgreSQL读写库有两个,一个是RPostgreSQL,另外一个是rpg,都依赖libpq-dev。

Ubuntu下安装Rattle

Rattle是基于R的一款可视化挖掘工具,是众多知名R GUI的一个,这里介绍下Ubuntu下安装Rattle的注意事项,

说明需要先安装libgtk2.0-dev

成功安装后,执行,

会提示安装XML,点确定,仍然会出现安装错误,因为你得先安装libxml2-dev,

  安装成功后,记得重新启动rattle Ubuntu下很多R所依赖的开发包,你得自己先安装好,否则就是类似的错误

如何查找PostgreSQL库所有表的行数

今天使用R批量导入Excel数据到PostgreSQL,总共25个excel,导完后被告知有2个excel是一模一样的,但我导入的时候没有记录表名和excel名直接的关系,如何查找是哪两个表重复了呢? 网上找到一段代码,可以获得指定库下所有表的行数,

结合我的表的前缀raw_2014_,轻松寻找到了2个行数一样的表,

 

在R中使用代理

这里不介绍如何获得代理服务器,这里只说下如何在R下翻墙, 设置Proxy

查看 Proxy

测试

试试把internet.info设为0或者1会有怎么样的输出,如果是2呢?

试试quantmod

取消 Proxy

用R读取MS SQLServer 的MDF文件

今天客户发了两个文件enjoy_interface.ldf 和enjoy_interface.mdf,从后缀可以看出是微软的SQL Server数据库文件,可我系统上并没有安装SQL Server或者Express。网上搜索了一番,发现至少需要SqlLocalDB 找到SqlLocalDB.exe的目录,默认是: C:\Program Files\Microsoft SQL Server\120\Tools\Binn 命令行下运行

然后按图示创建DSN(注意选择SQL Server Native Client 11.0) 接下来就可以在R中使用我们创建的DSN了

 

R与连接池

你能想到的,往往都有人帮你实现了,比如R下数据库连接池的问题,答案也是肯定的,而且是由大名顶顶RStudio来实现的,Object Pooling in R 这货不仅仅是数据库连接池,只是目前仅支持DBI罢了。

 

将Excel导入PostgreSQL之PL/R版本

PostgreSQL官方支持PL/pgSQL,PL/Tcl,PL/Perl和PL/Python这几种过程语言。同时还支持一些第三方提供的过程语言,如PL/Java,PL/PHP,PL/Py,PL/R,PL/Ruby,PL/Scheme,PL/sh, PL/V8。 前文介绍了,R下实现读取Excel,并导入PostgreSQL,于是尝试把它封装成存储过程,失败。 网上遍寻答案,无果,后来偶然发现,R下还有另外一个PostgreSQL的读写包rpg,测试成功。

将R的data.frame写入MySQL数据库

这里主要想纠正一个问题,就是关于含中文字符的data frame写入MySQL时,网上给的错误说法:不能用dbWriteTable函数!! 基本思路就是判断变量(列名)和数据是否为utf8编码,如果不是则转为utf8 data.frame则被转为data.table,一则偷懒,二则速度快 如果是csv,强烈推荐data.table的fread,快,无编码坑