R还是Excel?为什么不同时使用R和Excel?
文章缩略图
R和Excel就像通心粉和奶酪一样。无需选择其中一个,因为有许多包和扩展允许它们一起工作。仅仅因为你有一个xlsx文件并不意味着你不能用R来分析它。同样,你可以编写R代码来填充和操作Excel电子表格。
今天,您将掌握两种用于管理R和Excel之间通信的工具。它们是readxl和Bert。第一个是用于读取和操作Excel文件的R包,而后者是为Excel带来R功能的免费扩展。
Psst——你认为Google表格更胜一筹吗?您可以使用googlesheets4轻松地将R连接到Google表格。
Readxl:用于读取Excel文件的R包
该readxl包是可用于在R和Excel之间进行通信的最简单的包之一。它与替代的R包不同,因为它没有外部依赖项,这意味着它很容易在所有操作系统上安装和使用。
它支持.xls和.xslx文件格式。因此,如果您正在处理一些遗留电子表格,则无需事先将它们转换为更现代的、基于XML的文件格式。
您可以使用该命令直接从CRAN安装包install.packages("readxl"),然后将其作为任何其他库导入。
它捆绑了许多您可以使用的示例Excel文件。要将它们全部列出,请调用该readxl_example()函数。我们将在本节中使用datasets.xlsx文件。它包含许多您可能已经熟悉的数据集,例如Iris和Mtcars。所有这些都可以作为单独的表格提供。
要列出给定Excel文件的所有工作表,请使用以下函数调用:
图1—Excel文件中可用的表格(作者提供的图片)
如前所述,四个数据集中的每一个都存储在单独的工作表上。sheet您可以通过指定参数来读取特定工作表:
图2-来自示例Excel文件的Mtcars数据集(作者提供的图像)
但这是最好的部分——您可以使用类似Excel的语法指定行和列范围。该range参数用于指定要从中提取数据的范围。的值range="B1:E5"表示您要从第1行到第5行从第二列到第五列中提取数据:
图3—读取Excel文件时指定范围(作者图片)
让我们更进一步并省略sheet参数-您可以range以真正的Excel方式指定所有内容:
图4-在单个参数中指定工作表和范围(作者提供的图像)
长话短说,readxl是一个真正强大的用于读取Excel文件的R包。它允许您阅读现代和旧版Excel电子表格,并使用类似Excel的语法对其进行操作。但是你怎么能反过来呢?接下来让我们探讨一下。
伯特:将Excel与R连接起来
Bert是一个将Excel与R连接起来的免费工具。它旨在在电子表格中运行(用户定义的)R函数。您唯一需要做的就是编写函数——Bert会为您处理其他所有事情。
但这里有一个问题:目前,Bert仅适用于Windows。我们在M1Macbook(ARM)上运行Windows11作为仿真并遇到意外崩溃。这些很可能是由于Bert没有预料到的ARM架构。
现在,Bert并不是您唯一的选择。存在类似的解决方案,例如RExcel,但由于他们的网站已关闭,我们无法找到下载链接。雪上加霜的是,RExcel也仅适用于Windows。
要开始使用Bert,请前往他们的下载页面并下载已安装的。不用说,但您应该已经安装了Excel和R。
运行Excel和Bert控制台后,使用以下代码在A1到C4范围内的单元格中填充一个常数值:
图5-使用R填充Excel中的单元格(作者提供图片)
一开始感觉不自然,但您刚刚使用R代码填充Excel电子表格!
从这里,你可以做很多你通常在R中做的事情。例如,下面的代码片段绘制了一个正态分布的直方图:
图6-在Excel中使用R绘制直方图(作者提供的图片)
Bert的真正强大之处在于使用Excel中的自定义R函数。为此,请打开位于下的R文件C:\Users\username\Documents\BERT2\functions\functions.R并添加您的自定义函数。例如,我们添加的那个将两个数字相加:
图7—向Bert添加自定义R函数(作者提供的图片)
Bert会自动将R代码链接到Excel—您无需动动手指。=R.保存文件后,通过在任何Excel单元格中写入来使用该函数:
图8—在Excel中访问用户定义的R函数(作者提供的图片)
R编程与Excel总结
这就是您可以将Excel和R与Bert连接起来的方式。但是你应该吗?一些精通技术的人发现Excel已过时。
你认为Excel过时了吗?考虑R和Python中的这两个替代方案。
无论哪种方式,阅读和操作Excel文件都是任何R数据分析师的日常任务。该readxl软件包包含使通信尽可能简单所需的一切。如果您是Excel专家并且刚开始使用R,Bert可能是缓解过渡期的好选择。
您对这些R和Excel交叉通信选项有何看法?在下面的评论部分让我们知道。