读写 Excel 工作表
导入诸如 CSV 之类文本格式的数据的优点是不需要依靠某些特定软件来读取数据,并
且文件具有可读性,即软件中性。然而,它的缺点也很明显——我们不能直接对文本编辑
器中的数据执行计算操作,因为这些内容是纯文本格式的。
Excel 工作簿是另一种存储表格数据的常用格式。一个 Excel 工作簿可以包含一个或多
个工作表。每个工作表都是一个网格,可以直接填入文本和数值来创建表格。利用这些表,
可以轻松地在表格内,表格间或甚至工作表之间执行计算操作。Microsoft Excel 是一个功
能强大的软件,但它的数据格式(Excel 97-2003 版本为.xls,Excel 2007 以后的版本为.xlsx)
却不能被直接读取。
例如,data/prices.xlsx 是一个简单的 Excel 工作
簿,如图 7-2 所示。

虽然 R 中没有提供用来读取 Excel 工作簿的内置函数,
但一些 R 扩展包却可以对它进行操作。最简单的一个包是
readxl (https://github.com/hadley/readxl),它能够轻松地提取存
储在单个Excel 工作簿中的表格。用install.packages("readxl")从镜像中安装扩展包:
readxl::read_ _excel("data/prices.xlsx")
## Date Price Growth
## 1 2016-03-01 85 NA
## 2 2016-03-02 88 0.03529412
## 3 2016-03-03 84 -0.04545455
## 4 2016-03-04 81 -0.03571429
## 5 2016-03-05 83 0.02469136
## 6 2016-03-06 87 0.04819277
根据上面这个数据框,显然 read_excel( )会自动将 Excel 中的日期数据转换为 R
中的日期数据,并且正确地保留了 Growth 列中的缺失值。
openxlsx 扩展包也可以处理Excel 工作簿。这个包可以读取、写入和编辑 xlsx 文件,它
比 readxl 设计的更全面。我们可以运行 install.packages("openxlsx")来安装这个包。
利用 openxlsx,调用 read.xlsx( )将指定工作簿中的数据读入数据框,类似于
readxl::read_excel( ):
openxlsx::read.xlsx("data/prices.xlsx", detectDates = TRUE)
## Date Price Growth
## 1 2016-03-01 85 NA
## 2 2016-03-02 88 0.03529412
## 3 2016-03-03 84 -0.04545455
## 4 2016-03-04 81 -0.03571429
## 5 2016-03-05 83 0.02469136
## 6 2016-03-06 87 0.04819277
为了确保正确地导入日期值,我们需要指定 detectDates = TRUE;否则,日期数
据将会被存为数值数据,你可以尝试一下。除了读取数据之外,openxlsx 也可以用现有
的数据框创建工作簿:
openxlsx::write.xlsx(mtcars, "data/mtcars.xlsx")
这个扩展包支持更高级的功能,如通过创建样式和插入绘图来编辑现有工作簿,但这
些功能超出了本书的范围。要想了解更多详细信息,可以阅读这个包的文档。
还有一些其他的包也可以用于处理 Excel 工作簿。XLConnect(http://cran.r-project.org/
web/packages/XLConnect)是另一个跨平台的Excel 连接器,它不依赖于安装的 Microsoft Excel,
但却依赖于安装的 Java 运行环境(JRE)。RODBC(http://cran.r-project.org/web/packages/
RODBC)是一个更通用的数据库连接器,可以在 Windows 上用安装好的 ODBC 驱动程序
连接到 Access 数据库和 Excel 工作簿。由于这两个包有较强的依赖性,因此在这个部分我
们就不加以介绍了。
读写 Excel 工作表的更多相关文章
- C#中如何在Excel工作表创建混合型图表
在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...
- C#将一个excel工作表根据指定范围拆分为多个excel文件
C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其 ...
- C# 原样复制excel工作表
在excel中,工作表是工作薄的组成部分,一个工作薄可以由一个或多个工作表组成,一个工作薄也可以说是一个excel文档,正因为如此,excel工作表的复制也就分为两种类型:在同一文档之内复制和在不同文 ...
- 使用宏命令撤销EXCEL工作表保护
EXCEL工作表编辑资料,设置了工作表保护后,不能对表格进行插入删除操作.如果没有密码,很简单:工具-选项—工作表保护——撤消工作表保护 就可以了.如果忘记密码,如下操作: 1. 打开文件 2. 工具 ...
- C# 如何合并Excel工作表
文档合并.拆分是实现文档管理的一种有效方式.在工作中,我们可能会遇到需要将多个文档合并的情况,那如何来实现呢,本文将进一步介绍.关于拆分Excel工作表,可参见这篇文章--C#如何拆分EXCEL工作表 ...
- 电脑右键新建excel工作表,但是扩展名是.xls,而不是.xlsx
怀疑是因为之前安装了wps,然后又卸载了,导致的.上网查阅,如下: excel默认新建xls 不是我的问题 Excel 2010/2013/2016在鼠标右键新建xls或xlsx文件后,打开报错“无法 ...
- C# 合并Excel工作表
文档合并.拆分是实现文档管理的一种有效方式.在工作中,我们可能会遇到需要将多个文档合并的情况,那如何来实现呢,本文将进一步介绍.关于拆分Excel工作表,可参见这篇文章——C#如何拆分EXCEL工作表 ...
- 移除Excel工作表密码保护小工具含C#源代码
有朋友发了个Excel.xlsx文件给我,让我帮忙看看里面是怎么做出来的.打开审阅后发现,每个Excel工作表都添加了密码保护: 看不到里面的隐藏列和公式等等,感觉很神秘.于是研究了一下Excel文件 ...
- C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】
C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...
随机推荐
- oracle的cursor
oracle的cursor 转自:http://www.cnblogs.com/shengtianlong/archive/2010/12/31/1922767.html 1,什么是游标? ①从表中检 ...
- Thrift Expected protocol id ffffff82 but got 0
如果服务端配的也是noblock=false;客户端不能改成noblock=true;
- 问答项目---金币经验奖励规则及网站配置写入config文件
具体步骤: 引入配置文件——>获取当前数组——>进行合并 public function edit(){ //引入 config.php配置文件 $file = APP_PATH.'Com ...
- HDCMS导航高亮显示!解决办法
第一种方法:(传递class) <channel type='top' row='8' class='cur' > <li class='{$field.class}'> &l ...
- 混合欧拉回路的判断(Dinic)
POJ1637 Sightseeing tour Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7483 Accepte ...
- 170725、Kafka原理与技术
本文转载自:http://www.linkedkeeper.com/detail/blog.action?bid=1016 Kafka的基本介绍 Kafka最初由Linkedin公司开发,是一个分布式 ...
- Iframe中子窗体给父窗体传值
<html> <head> <script type="text/javascript"> function GetData(data) { a ...
- acceptorThreadCount
Apache Tomcat 7 Configuration Reference (7.0.92) - The HTTP Connector https://tomcat.apache.org/tomc ...
- C# WinForm实现任务栏程序图标闪烁
相信大家在用QQ的时候都会知道,你打开了QQ聊天窗口,如果窗口不是当前激活的窗口的话,收到QQ消息时,任务栏(不是托盘图标)上的图标会闪一下变成黄色(Win7默认主题下),用以通知用户有消息进来了,之 ...
- 【spring mvc】application context中【bean】的生命周期
生命周期过程 主要分为四部分: 一.实例化 1. 当调用者通过 getBean( name )向 容器寻找Bean 时,如果容器注册了org.springframework.beans.factory ...