在 R 中使用压缩文件和常见文档格式
介绍
我们如何使用 R 处理压缩和常见文档格式及其数据?在本指南中,我们将了解哪些软件包支持此活动,然后演示如何处理压缩文件和常见文档格式。首先,我们将解释压缩文件和常见文档格式的概念,然后 R 将帮助我们理解隐藏在其中的所有数据。
压缩
大多数情况下,当您使用 R 进行数据挖掘或科学研究时,您会一开始就发现您正在处理的数据量非常大,从几百 MB 到几 GB 甚至几 TB。根据您的情况,您的计算机上可能没有足够的物理容量来保存这些文件。
输入压缩。大多数情况下,您处理的数字数据具有相当不错的压缩率,通过利用这种技术,您只需将数据存储为压缩格式,即可节省宝贵的计算资源,然后让 R 发挥其魔力。您必须明确区分以下两种情况:
- 将计算数据放在要作为压缩文件写入磁盘的数据框中
- 将一堆较小的文件压缩到一个文件中,然后使用这些文件
本指南将对这两种情况进行讨论。
通用文档格式
常见的文档格式对您来说应该很熟悉;它们是 PDF、Word、Exel 等文档。R 处理这些类型文档的能力使其非常强大。在许多情况下,您需要处理的信息隐藏在从其他部门收到的文档中,因为他们可能无法以最有效的格式为您提供所需的数据。
读取压缩文件
自 R 2.10 版起,新增了一项功能,可帮助您读取压缩文件的内容并将其视为文本文件。此文件应使用 bzip2、xvz 或 gzip 进行压缩。您可以访问sbeams获取示例数据集并尝试此操作。下载示例文件后,您可以启动 R 控制台并加载它。
r <- read.table("C:/Users/dszabo/Downloads/External_test_data.tar.gz")
根据数据集的大小,可能需要一些时间来加载。在 Windows 上,您指定的路径中应该有正斜杠(/)。
创建压缩文件
可能存在这样的情况:您必须中止工作,但又不想丢失已取得的进展,或者想要传输 PC 上的数据集与同事共享。您可以选择将其导出,然后轻松压缩。
让我们创建一些虚拟数据。
X <- matrix(rnorm(1e8), ncol=10)
RAM 大小约为 1.5GB。如果您愿意,可以使用1e7将其缩小。现在您可以将这些数据写入文件。您可以在此处使用两个函数:write.table()和save()。
此功能不会压缩文件,因此如果您想减小文件大小,则应使用与 R 兼容的工具,例如 gzip。
write.table(X, file="C:/temp/progress.Rbin", sep=",", row.names=FALSE, col.names=FALSE)
这个可以压缩文件:
save(X,file="C:/temp/progress.Rbin", compress=T)
压缩时文件的大小取决于您处理的数据。在此演示案例中,原始大小为 1.5GB,压缩后大小为 0.75GB,压缩率为 50%。
处理常见文档
有多个软件包提供类似的功能,但本指南中的示例将使用预装示例附带的readtext模块。
为了使用这个包,需要安装:
install.packages("readtext")
安装软件包后,它会将示例文件夹放在您的默认安装文件夹下。在 Windows 上,它位于 C:/Program Files/R/R-3.6.3/library/readtext/extdata 下。此文件夹包含本指南将用于演示的示例 PDF 文件。
加载readtext库:
library(readtext)
现在需要初始化DATA_DIR变量:
DATA_DIR <- system.file("extdata/", package = "readtext")
它应该产生以下输出:
1] "C:/Program Files/R/R-3.6.3/library/readtext/extdata"
如果您想访问和加载 PDF 文件,您需要发出以下行:
pdf_data <- readtext(paste0(DATA_DIR, "/pdf/*.pdf"))
pdf_data现在包含以下信息:
readtext object consisting of 1 document and 0 docvars.
# Description: df[,2] [1 x 2]
doc_id text
<chr> <chr>
1 UK_natl_2005_en_PVP.pdf "\" ⌧ Pro\"..."
结论
在本指南中,您学习了如何使用压缩数据,以及如何从 R 控制台创建压缩数据。您还学习了如何使用常见文档类型。我希望本指南对您有所帮助,并感谢您阅读本指南。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~