读写 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/ ...
随机推荐
- 监控linux流量python版
python版监控linux流量 直接上代码,使用OptionParser来传入参数 #coding:utf-8 #------------- #Author:Hu #Data:20150520 #- ...
- treeview(树加载)
数据库结构 id:int类型,主键,自增列: Name:char类型: paraid:int类型 窗台拖入控件treeview. 1.版本1 using System; using S ...
- SaltStack配置管理-jinja模板
上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://doc ...
- Oracle Schema Objects——View
Oracle Schema Objects Oracle视图View 普通视图.物化视图 视图(视图不包含数据,不是段对象,不占用空间,只是一个代码.) 作用: 简化SQL 为安全,不暴露表的名称 视 ...
- python问答模块
""" 该模块功能:获取用户的输入文本,通过输入文本和数据库中的关键主题文本相比较, 获取最佳的回答内容 """ import xlrd i ...
- 前端~HTML~CSS~JavaScript~JQuery~Vue
HTML CSS JavaScript DOM文档操作 jQuery实例 Vue
- 比特币BTC全节点搭建
比特币BTC全节点搭建 #环境 ubuntu 16.4 #硬盘500GB #截止2018-12-31磁盘占用超过230GB #客户端安装 #下载页面 #https://bitcoin.org/zh_C ...
- 小米范工具系列之四:小米范HTTP批量发包器
最新版本1.3,下载地址:http://pan.baidu.com/s/1c1NDSVe 文件名httpsender . 此工具使用java 1.8以上版本运行. 小米范HTTP批量发包器的主要功能 ...
- day13(JSTL和自定义标签&MVC模型&javaweb三层框架)
day13 JSTL标签库(重点) 自定义标签(理解) MVC设计模式(重点中的重点) Java三层框架(重点中的重点) JSTL标签库 1 什么是JSTL JSTL是apache对EL表达式的扩 ...
- [Axiom 3D]3.SceneManager场景管理器
首先看看Axiom.Core命名空间下public abstract class SceneManager : DisposableObject A SceneManager organizes th ...