<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>R语言 on 格物堂</title><link>https://gewutang.cn/tags/r%E8%AF%AD%E8%A8%80/</link><description>Recent content in R语言 on 格物堂</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 05 Nov 2013 00:00:00 +0000</lastBuildDate><atom:link href="https://gewutang.cn/tags/r%E8%AF%AD%E8%A8%80/index.xml" rel="self" type="application/rss+xml"/><item><title>R中的金融数据接口</title><link>https://gewutang.cn/2013/11/05/financial-data-accessible-from-r/</link><pubDate>Tue, 05 Nov 2013 00:00:00 +0000</pubDate><guid>https://gewutang.cn/2013/11/05/financial-data-accessible-from-r/</guid><description>&lt;p&gt;借助R软件，我们可以从网站上获取很多经济和金融数据。我整理了一下目前R可以使用的获取金融数据的包，供大家参考。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;数据源&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;金融工具类型&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;R包&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;免费&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;是否发布在CRAN上&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;链接&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;yahoo&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;所有金融工具，日数据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;quantmod&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="http://www.quantmod.com" target="_blank" rel="noopener"&#10; &gt;http://www.quantmod.com&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;google&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;所有金融工具，财务数据，日数据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;quantmod&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="http://www.quantmod.com" target="_blank" rel="noopener"&#10; &gt;http://www.quantmod.com&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Oanda&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;外汇、贵金属数据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;quantmod&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="http://www.quantmod.com" target="_blank" rel="noopener"&#10; &gt;http://www.quantmod.com&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fred&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;经济数据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;quamod&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="http://www.quantmod.com" target="_blank" rel="noopener"&#10; &gt;http://www.quantmod.com&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Quandl&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;期货数据，日数据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RQuandl&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;http://quandl/help/packages/r&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TrueFX&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;外汇高频数据&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TFX&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;是&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="http://rpubs.com/gsee/TFX" target="_blank" rel="noopener"&#10; &gt;http://rpubs.com/gsee/TFX&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bloomberg&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;所有品种、基金、所有频度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rbbg&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;否&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;否&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="http://finddata.org/rbloomberg/" target="_blank" rel="noopener"&#10; &gt;http://finddata.org/rbloomberg/&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Interactive Broker&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;所有品种、所有频度&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;IBrokers&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;否&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;yes&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a class="link" href="https://www.interactivebrokers.com" target="_blank" rel="noopener"&#10; &gt;www.interactivebrokers.com&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;</description></item><item><title>安装RMySQL</title><link>https://gewutang.cn/2013/09/28/notes-on-rmysql/</link><pubDate>Sat, 28 Sep 2013 00:00:00 +0000</pubDate><guid>https://gewutang.cn/2013/09/28/notes-on-rmysql/</guid><description>&lt;p&gt;处理金融市场数据的时候会用到MySQL数据库，R提供了一个RMySQL`包作为自身跟MySQL的接口。这个包本身很容易用，唯一不足的一点是在Windows下面安装RMySQL有点麻烦。安装RMySQL时,除了按部就班的安装MySQL、R、RTools、RMySQL等之外还要设置各种path变量以及把某些文件夹在各个路径里来回移动。&lt;/p&gt;&#10;&lt;p&gt;这篇文章就说一下自己在安装RMySQL过程中总结出来的较优的安装步骤。&lt;/p&gt;&#10;&lt;h4 id="下载并安装-mysql"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bd%e5%b9%b6%e5%ae%89%e8%a3%85-mysql" class="header-anchor"&gt;&lt;/a&gt;下载并安装 MySQL&#10;&lt;/h4&gt;&lt;p&gt;下载并安装 &lt;a class="link" href="http:http://dev.mysql.com/downloads/mysql/" target="_blank" rel="noopener"&#10; &gt;MySQL&lt;/a&gt; ，这一点大多数人都知道如何操作，只提醒一点看清楚自己的电脑是 32位还是64位.&lt;/p&gt;&#10;&lt;h4 id="把mysql添加到path变量"&gt;&lt;a href="#%e6%8a%8amysql%e6%b7%bb%e5%8a%a0%e5%88%b0path%e5%8f%98%e9%87%8f" class="header-anchor"&gt;&lt;/a&gt;把MySQL添加到Path变量.&#10;&lt;/h4&gt;&lt;p&gt;具体做法是找到我的电脑(指图标)，右键，系统属性，打开&amp;quot;高级&amp;quot;选项卡，下面可以瞅见&amp;quot;环境变量&amp;quot;，点进去，上面部分为&amp;quot;用户变量&amp;quot;，下面部分是&amp;quot;系统变量&amp;quot;，在变量列，找到一个叫Path的东西，选中，点编辑，把MySQL的安装路径复制进去即可。&lt;/p&gt;&#10;&lt;h4 id="关联mysql和r软件"&gt;&lt;a href="#%e5%85%b3%e8%81%94mysql%e5%92%8cr%e8%bd%af%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;关联MySQL和R软件&#10;&lt;/h4&gt;&lt;p&gt;具体是，打开 C:\Program Files\MySQL\MySQL Server 5.5\lib ，新建 OPT 文件夹，并复制 MYSQLLIB.LIB 到该文件夹内。同时，复制 libmysql.dll 到到\R\R-2.14.0\bin\ (64 bit) 或 \R\R-2.14.0\bin\i386\ (32 bit) 和 C:\Windows\System32 中;接下来,找到 R\3.0.2\etc 文件夹，并新建 Renviron.site 文件,用记事本打开,向其中添加一行:MYSQL_HOME =”C:/Program Files/MySQL/MySQL Server 5.5/” .&lt;/p&gt;&#10;&lt;h4 id="下载并安装rtools"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bd%e5%b9%b6%e5%ae%89%e8%a3%85rtools" class="header-anchor"&gt;&lt;/a&gt;下载并安装&lt;a class="link" href="http://cran.r-project.org/bin/windows/Rtools/" target="_blank" rel="noopener"&#10; &gt;RTools&lt;/a&gt;&#10;&lt;/h4&gt;&lt;p&gt;安装过程很简单。要提醒的是要把\Rtools\2.14\bin,\Rtools\3.0.x\MinGW\bin,\Rtools\3.0.x\MinGW64\bin 添加到 path 变量。&lt;/p&gt;&#10;&lt;h4 id="下载rmysql源代码"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bdrmysql%e6%ba%90%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;下载&lt;a class="link" href="http://biostat.mc.vanderbilt.edu/wiki/main/RMySQL/RMySQL_0.8-0.tar.gz" target="_blank" rel="noopener"&#10; &gt;RMySQL&lt;/a&gt;源代码&#10;&lt;/h4&gt;&lt;p&gt;略过。&lt;/p&gt;&#10;&lt;h4 id="运行代码安装rmysql"&gt;&lt;a href="#%e8%bf%90%e8%a1%8c%e4%bb%a3%e7%a0%81%e5%ae%89%e8%a3%85rmysql" class="header-anchor"&gt;&lt;/a&gt;运行代码安装RMySQL&#10;&lt;/h4&gt;&lt;p&gt;假设源码存放地址为 d://RMySQL_0.8-0.tar.gz ,运行如下命令:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;install.packages(&amp;quot;RMySQL_0.8-0.tar.gz&amp;quot;,repo=NULL,type=&amp;quot;source&amp;quot;)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;测试安装是否成功:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;library(RMySQL) &#10;drv = dbDriver(&amp;quot;MySQL&amp;quot;) &#10;con = dbConnect(drv,host=&amp;quot;localhost&amp;quot;,dbname=&amp;quot;test&amp;quot;,user=&amp;quot;root&amp;quot;,pass=&amp;quot;root&amp;quot;) &#10;album = dbGetQuery(con,statement=&amp;quot;select * from t_master&amp;quot;) &#10;album&#10;&lt;/code&gt;&lt;/pre&gt;&#10;</description></item><item><title>R软件中的集合计算操作</title><link>https://gewutang.cn/2013/09/27/notes-on-sets-caculations-in-r/</link><pubDate>Fri, 27 Sep 2013 00:00:00 +0000</pubDate><guid>https://gewutang.cn/2013/09/27/notes-on-sets-caculations-in-r/</guid><description>&lt;p&gt;在处理数据尤其是在编写函数或编译R包的时候会涉及到集合的运算操作。比如，判断某个元素是否属于某个集合，并用这个判断结果作为 if 结构中的条件语句。&lt;/p&gt;&#10;&lt;p&gt;在量化投资的编程中更是经常用到集合的运算操作。比如，判断某支股票是否在今日的投资组合里，又或者在已有当前投资组合的情况下如何生成交易单以得到理想投资组合的股票代码，这涉及到差集操作。因此，了解一下R中的集合计算操作是很有必要的。&lt;/p&gt;&#10;&lt;p&gt;根据小学时候的知识，我们知道集合计算无非包括这么几类：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;两个集合的交集，即两个集合中共有的那些元素&lt;/li&gt;&#10;&lt;li&gt;两个集合的并集，即两个集合粗暴合并，并剔除重复值后剩余的那些元素&lt;/li&gt;&#10;&lt;li&gt;两个集合的差集，集合1减去集合1跟集合2的交集，即得到集合1、集合2的差集，换句话说，集合1中包含而集合2未包含的那些元素&lt;/li&gt;&#10;&lt;li&gt;元素判断，即开篇说的那个问题，某个元素是否属于某个集合&lt;/li&gt;&#10;&lt;li&gt;集合等价判断，即两个集合是否是同一个集合&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;它们对应的R函数就是下面这些：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;union(x, y)&lt;/li&gt;&#10;&lt;li&gt;intersect(x, y)&lt;/li&gt;&#10;&lt;li&gt;setdiff(x, y)&lt;/li&gt;&#10;&lt;li&gt;is.element(el, set)&lt;/li&gt;&#10;&lt;li&gt;setequal(x, y)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;本着解释知识不举例子就是耍流氓的精神，我们看看下面的例子:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# 随意生成两个向量x和y&#10;x &amp;lt;- c(sort(sample(1:20, 9)), NA)&#10;y &amp;lt;- c(sort(sample(3:23, 7)), NA)&#10;# 查看 x，y 都长什么样子&#10;x&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] 1 4 6 7 9 11 15 17 19 NA&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;y&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] 12 13 14 15 19 20 21 NA&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# 计算并集&#10;union(x, y)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] 1 4 6 7 9 11 15 17 19 NA 12 13 14 20 21&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# 计算交集&#10;intersect(x, y)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] 15 19 NA&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# 计算差集，注意：计算差集时，集合的先后顺序是影响结果滴！&#10;setdiff(x, y)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] 1 4 6 7 9 11 17&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;setdiff(y, x)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] 12 13 14 20 21&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# x，y是否相等，当然不相等啦....&#10;setequal(x, y)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] FALSE&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# 看看并集、交集、差集的关系&#10;## True for all possible x &amp;amp; y :&#10;setequal( union(x, y),&#10; c(setdiff(x, y), intersect(x, y), setdiff(y, x)))&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] TRUE&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;# 元素判断&#10;is.element(5, x)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] FALSE&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;is.element(100, x)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] FALSE&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;is.element(x, y) # length 10&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code class="language-r"&gt;is.element(y, x) # length 8&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre&gt;&lt;code&gt;## [1] FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE&#10;&lt;/code&gt;&lt;/pre&gt;&#10;</description></item></channel></rss>