使用数据框管理 R 中的数据
介绍
数据框是一种实用的数据处理方式;它们出现在数据世界中的任何地方。无论您是导入数据、进行描述性统计、创建可视化还是进行机器学习,数据框都是您工作的核心。R 是一种相对容易进入这些数据世界的语言。在深入讨论数据框细节之前,我应该指出,我们在这里不仅会关注基础 R,还会关注通过其一系列软件包提供的tidyverse解决方案。无论您是新手还是老手,tidyverse 都能让您的 R 工作更加高效。
对于那些好奇的人,我们将通过 RStudio 和 R Markdown 构建它。
我以前见过这个吗?
数据框的优点在于每个人都可能熟悉这个概念。数据框本质上是表格。如果你正式考虑数据,它由属性和记录组成。以下是一个来自飞机运动的流行数据集的示例(显示在 RStudio 中)。
请注意,无论是在 R 数据框、Excel 表还是 SQL 表中显示,每一行(记录)都代表一次航班,每一列(属性)都描述该航班。每个单元格的内容都包含每条记录的属性。
我能用它做什么?
一旦你创建了这个数据框,并具备了正确的技能,你就可以在整个数据科学和分析领域中大展身手。例如,这些领域的大部分工作都可以从数据框开始:
- 数据挖掘、描述统计和可视化
- 自然语言处理 (NLP)
- 时间序列分析
- 统计建模
- 机器学习 (ML)
如何创建数据框?
创建您自己的数据框
下面介绍如何创建一个简单的数据框,记录各种虚构人物的姓名和工作。首先,在 R 数据库中。
# We assign the data frame to variable df_base
df_base <- data.frame(name = c("Jane","Sri","Eliza","Joe"),
occupation = c("engineer","designer","architect","engineer"))
请注意,您只需使用data.frame函数,为列提供名称,并填充列的内容(使用c()向量功能)。如果这还不理解,只需将其复制并粘贴到 RStudio 中并继续操作即可。
现在,我们只需输入df_base即可查看此数据框
df_base
相当简单 - 它看起来像一个表格。请注意,数据框可以容纳多种数据类型(即,列可以是字符、整数、日期、因子等)。上面您会注意到数据类型显示在列名下方;在本例中,我们的两列被编码为因子。
虽然了解 R 的基本工作原理是件好事,但数据科学界的许多人都接受了 tidyverse,并使用稍微更新的数据框版本,称为tibble。它非常相似(实际上就是一个数据框)。以下是我们如何构建 tibble 样式的数据框:
# Load the tidyverse package
library(tidyverse)
# Assign the data frame to variable df_tidy
df_tidy <- tibble(name = c("Jane","Sri","Eliza","Joe"),
occupation = c("engineer","designer","architect","engineer"))
我们可以用类似的方式来查看这个 tibble(即通过输入变量名):
df_tidy
您会注意到它们看起来非常相似,但列被编码为字符而不是因子(请注意 chr ) 。 Hadley Wickham 令人印象深刻的(免费) R for Data Science 描述了从数据框到现代 tibble 的转变。我们将在几个例子中展示这两种方法,然后只关注 tidyverse。
访问数据框中的数据
现在让我们来看看如何实际访问数据框的各个部分。这总是很有用,因为对于任何特定的数据任务,您可能只使用行或列的子集。
通过索引选择列
假设您想使用列号访问特定列。也许您想了解我们数据集中的职业。访问的工作原理如下:
df_base[,2]
我们不仅可以看到打印的第二列中每行的值,还可以看到相应的级别。有关级别的更多信息,请参见此处。从 tibble 中选择一行时,语法相同,只是不包括级别,因为带有字符的列不会自动编码为因子,只有因子才有级别(如果您现在不了解级别,请不要困惑)。请注意,tibble 列打印得更好一些(并且是chr或字符,但不是开玩笑的方式)。
df_tidy[,2]
请注意,在 R 中,定位单元格时,[1,2]指的是第一行和第二列,因此[,2]抓取整个第二列。
为了实际做一些更有趣的事情,并计算唯一作业的数量,您可以在函数内部使用相同的语法:
unique(df_tidy[,2])
按名称选择列
请注意,我们保留,语法,因为我们想要整个列,并通过引号中的名称选择列。
df_base[,"occupation"]
这对于 tibble 来说也是一样的(这是我们最后一次进行比较)。再次注意,级别已经消失,因为 tidyverse 默认为字符而不是因子。
df_tidy[,"occupation"]
因为您可能已经了解了这个模式,所以我现在将只关注 tidyverse。
根据索引选择一行
计算通常发生在列或列的一部分上;当您查看整行或几行时,通常更多的是进行检查和健全性检查。现在假设您遇到了一个意外的计算结果,并想检查数据集中的整行。
df_tidy[1,]
以下是抓取多行的语法。请注意,您要从感兴趣的第一行到最后一行进行包含。
df_tidy[1:2,]
根据内容选择行
虽然我们通常通过索引(即列号)或列名访问列,但对于行,我们通常通过索引或行内容访问。虽然您可以在数据框中命名行,但这不是典型的工作流程。更常见的是,您会根据单元格包含的内容来识别行。
假设我们想要抓取工程师的所有行。在这里,我们实际上会引入 tidyverse 的其他部分,这将帮助您完成数据之旅。请注意,我们将调用 tidyverse 包(这是最好的),并使用%>%将数据从我们的 tibble “管道”到过滤器函数。有关管道的更多信息,请参阅Hadley Wickham 的(免费)R for Data Sci
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~