读写 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 dos 常用命令行
有关某个命令的详细信息,请键入 HELP 命令名 dir (directory) :列出当前目录下的文件以及文件夹 md (make directory): 创建目录 rd (remove direc ...
- 170725、Kafka原理与技术
本文转载自:http://www.linkedkeeper.com/detail/blog.action?bid=1016 Kafka的基本介绍 Kafka最初由Linkedin公司开发,是一个分布式 ...
- codeforces#505--C Plasticine Zebra
C. Plasticine zebra time limit per test 1 second memory limit per test 256 megabytes input standard ...
- win10配置的静态/动态IP和 DNS的方法
1.配置静态IP和DNS netsh interface ip set address name="以太网" source=static addr=192.168.9.145 ma ...
- 模反元素 RSA Euler's totient function
https://baike.baidu.com/item/模反元素/20417595 如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1.这时,b就 ...
- javascript关闭网页的几种方法
js关闭当前页面(窗口)的几种方式总结,需要的朋友可以参考一下: 1. 不带任何提示关闭窗口的js代码 <a href="javascript:window.opener=null;w ...
- ELK服务基础
官方文档 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana三个开源软件组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK又称为ELK s ...
- Swap---hdu2819(最大匹配)
题意:通过交换行或者列来实现对角线(左上角到右下角)上都是1, 首先,如果某行全是0或者某列全是0必然不满足情况输出-1,如果能转换的话,那么必然可以通过全由行(列)变换得到: 还有就是对角线上的N个 ...
- mysql 数据操作 单表查询 where约束 like 模糊匹配
mysql> select * from employee; +----+------------+--------+-----+------------+-----------+------- ...
- Python 面向对象 类 __str__
class dog(object): def __init__(self,name): self.name = name d = dog('mike') print(d) # <__main__ ...