《R语言数据分析》——1.3 导入文本文件的子集

简介: 本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.3节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 导入文本文件的子集 某些时候,我们仅需要一部分存放在数据库或文本文件中的数据用来进行数据分析。

本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.3节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 导入文本文件的子集

某些时候,我们仅需要一部分存放在数据库或文本文件中的数据用来进行数据分析。此时,如果处理对象范围仅包括数据框中和应用相关的数据子集,其处理速度将比我们之前讨论过的那些特定开发包和性能优化程序更快。

假设我们仅对飞往纳什维尔的航班感兴趣,因为2012年在那召开了useR!的大会,那我们仅需要CSV文件中Dest属性为BNA的记录(BNA为国际航空运输协会为纳什维尔规定的国际空港编号)。

与其先花将近2000毫秒导入所有的数据(如前述小节所述),然后再去掉不符合要求的行(参见第3章),不如让我们看看在数据装载时就对其进行筛选的处理方法。

可以使用前面提到的sqldf包来解决这个问题。通过设置SQL语句的内容来完成数据的筛选:

QQ_20170525100434

参数sql默认为“select * from f?ile”,即从数据集中选择所有数据。现在,在此基础上增加一个筛选条件。注意,我们对更新后的SQL语句中查找条件上增加了双引号,因为sqldf不能自动识别出双引号,只会将其作为域的一部分处理。我们也可以在类Unix系统中通过一个特制的用户筛选参数,如下例所示来解决这个问题:

QQ_20170525100437

处理得到的结果数据框包含了从227?496个记录中筛选出的3481个样本值,而使用临时的SQLite数据库来进行筛选也能提高一点点导入速度:

QQ_20170525100441

之所以能加快一点处理速度,是因为所有的R命令首先都会将CSV文件先加载到一个临时的SQLite数据库中,这一过程所需要的时间是不能少的。为了加快处理速度,读者可以将dbname指定为null,这样,系统就会在内存而非临时文件内创建SQLite数据库,但是这种方法有可能并不适合大数据集。

在导入到R会话前筛选平面文件

有没有其他更快或更便捷的方法来处理类似文本文件中的部分数据呢?有些人可能会采取一些常规的基于表达式的筛选条件,在导入平面文件之前对其进行筛选。例如,在Unix环境中,grep或者ack都是非常不错的工具。但是在Windows平台上,我们默认是找不到类似方法的,并且将CSV文件采用常规表达式去进行解析也有可能导致一些意想不到的负面结果。相信我,你肯定不愿意从零开始写一个CSV、JSON,或者XML的分析器。

无论如何,现在数据科学家在处理数据时,必须要具备万事通的能力。下面,我们将给出一个简单可行的样例来展示我们如何以低于100毫秒的速度读入筛选好的数据:

QQ_20170525100446

相比之前我们得到的结果,这个结果确实非常棒!但如果我们希望再挑选出那些到达时延超过13.5分钟的航班呢?

另一种,也可能是更容易实现的方法,可以首先将数据导入到某个数据库中,然后根据需要,查询得到符合条件的数据子集。我们使用一个简单的例子来说明这种方法。例如,将SQLite数据库导入到某个文件中,然后在read.csv.sql的默认运行时间内来获取任意数据子集。

下面,我们将创建一个永久的SQLite数据库:

QQ_20170525100459

该命令在当前工作路径下创建了一个名为hf?lights_db的文件。接下来,我们还将创建一个名为hf?lights的表格,并将之前CSV文件的内容导入到该数据库中:

QQ_20170525100504

至此,还没完成创建测试平台的任务,由于以上操作仅能执行一次,而对数据集进行筛选的操作之后有可能需要执行若干次:

QQ_20170525100507

我们在少于100毫秒的时间内完成了数据库子集的导入!不过,如果计划经常需要对这个永久数据库进行查询,那我们还可以做得更好:为什么不设计一个真的数据库实例作为数据库而非使用一个简单的基于文件的、无服务器的SQLite测试后台呢?

相关文章
|
6月前
|
机器学习/深度学习 图计算
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据(2)
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据(2)
|
14天前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
35 2
|
14天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
20 2
|
6月前
|
监控 安全 数据可视化
R语言在员工上网行为监控中的数据分析
本文讲述了如何使用R语言分析员工上网行为以提升企业网络安全。通过收集网络流量和访问记录数据,利用R进行读取、分析和可视化,例如查看访问时长分布和热门网站。此外,文中还介绍了一个自动将监控数据提交到网站的R脚本,通过定时任务实现数据的持续更新和管理,及时发现并应对安全风险,增强网络安全性。
302 3
|
2月前
|
数据采集 算法 搜索推荐
R语言营销数据分析:使用R进行客户分群的实践探索
【9月更文挑战第1天】R语言以其强大的数据处理和统计分析能力,在金融数据分析、营销数据分析等多个领域发挥着重要作用。通过R语言进行客户分群,企业可以更好地理解客户需求,制定精准的营销策略,提升市场竞争力和客户满意度。未来,随着大数据和人工智能技术的不断发展,R语言在营销数据分析中的应用将更加广泛和深入。
|
6月前
|
数据可视化 前端开发 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(上)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
为啥我敢说Python是数据分析界的扛把子语言?
为啥我敢说Python是数据分析界的扛把子语言?
|
5月前
|
机器学习/深度学习 自然语言处理 数据挖掘
使用Python和大模型进行数据分析和文本生成
Python语言以其简洁和强大的特性,成为了数据科学、机器学习和人工智能开发的首选语言之一。随着大模型(Large Language Models, LLMs)如GPT-4的崛起,我们能够利用这些模型实现诸多复杂任务,从文本生成到智能对话、数据分析等等。在这篇文章中,我将介绍如何用Python连接和使用大模型,并通过示例展示如何在实际项目中应用这些技术。
|
6月前
|
机器学习/深度学习 数据挖掘 计算机视觉
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
|
6月前
|
数据可视化
R语言大学城咖啡店消费问卷调查数据报告:信度分析、主成分分析可视化
R语言大学城咖啡店消费问卷调查数据报告:信度分析、主成分分析可视化