读写 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/ ...
随机推荐
- windows MySQL5.7.9免安装版配置方法
1. 解压MySQL压缩包 将下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Program Files\mysql-5.7.9-win32" ...
- 将web项目打成war包部署在tomcat步骤
将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...
- JavaScript三(对象思想)
JavaScript并不是面向对象的程序设计语言,但它是基于对象的.JavaScript中的每个函数都可用于创建对象,返回的对象既是该对象的实例,也是object的实例 . 一.对象与关联数组 Jav ...
- Jquery Uploadify使用参数详解
开始上传 $('#uploadify_1').uploadifyUpload(); 1 uploader uploadify.swf文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击 ...
- T-SQL数据库备份
/*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名 如果指定的数据不存在,返回安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名 */ /*--调用 ...
- python3.7.2 ssl版本过低导致pip无法使用的问题
环境:系统是centos6.6,python:python3.7.2 问题:安装好python3.pip后,在通过pip install xx 安装模块时,发现无法安装的问题,提示版本太低,系统默认的 ...
- TA-Lib中文文档(一):快速开始
TA-Lib 简介: 这是一个Python 金融指数处理库TA-LIB,他是基于 Cython 而不是 SWIG. TA-Lib is widely used by trading software ...
- BBS - 文章详细页、点赞、踩灭
一.文章详细页 文章详细页:1.链接:<div><h5><a href="/blog/{{ article.user.username }}/articles/ ...
- Fast R-CNN论文详解 - CSDN博客
废话不多说,上车吧,少年 paper链接:Fast R-CNN &创新点 规避R-CNN中冗余的特征提取操作,只对整张图像全区域进行一次特征提取: 用RoI pooling层取代最后一层max ...
- Doing Homework---hdu1074(状态压缩&&记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 有n(n<=15)门课需要做作业,每门课所需时间是used_time以及每门课作业上交的最 ...