读写 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/ ...
随机推荐
- 详解Javascript中prototype属性
转自:https://www.jb51.net/article/91826.htm 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Jav ...
- V2EX的RSS订阅地址
1.全站RSS输出: https://www.v2ex.com/index.xml 2.单独节点RSS输出: http://www.v2ex.com/feed/{节点名}.xml 以shadowso ...
- CentOS 6.7 配置LVM (逻辑卷管理)
LVM 简介 LVM是逻辑盘卷组管理 (Logical Volume Manager) 的简称. LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性,在一定程度上解决普通磁盘分区带来 ...
- Kubernetes实战(二):k8s v1.11.1 prometheus traefik组件安装及集群测试
1.traefik traefik:HTTP层路由,官网:http://traefik.cn/,文档:https://docs.traefik.io/user-guide/kubernetes/ 功能 ...
- C#基础整理(一)
1.什么是.net? .net有.net平台和.Net Framework框架. .net平台是包含.net framework框架. framework框架提供稳定的运行环境来保证基于.Net平台开 ...
- eval(PHP 4, PHP 5)
eval — 把字符串作为PHP代码执行 说明 mixed eval ( string $code_str ) 把字符串 code_str 作为PHP代码执行. 除了其他,该函数能够执行储存于数据库文 ...
- python第三方模块之paramiko模块
目录: paramiko模块介绍 paramiko模块安装 paramiko模块使用 一.paramiko模块介绍 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件 ...
- Docker(二)
Docker Compose 多主机网络 容器集群管理 Docker结合Jenkins构建持续集成环境 Docker结合Consul实现服务发现 Docker API 日志管理
- WebService-WSDL简单介绍
一.什么是WSDL 网络服务描述语言(Web Services Description Language)简称WSDL.作用是通过接口之间的调用实现数据的传输.由于WSDL是基于XML格式的,所以它可 ...
- VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)
上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...