你好,我的名字是大卫·克里斯滕森,在这些 课程中,您将学习如何通过过滤来操作数据, 总结、融合。 您还将学习如何处理缺失值。 在本课中,我将向您展示如何过滤数据。 让我们从一些示例数据开始。 为了演示的目的,我们将使用 mtcars 数据集,内置于 R 中。 因此无需加载任何特殊内容即可进行后续操作。 要查看 mtcars 数据集,您只需将 mtcars 输入到 安慰。 这将输出数据集。 那么这个数据是什么? 嗯,大约有 30 个观察结果 1974 年出现在《Motor Trend》杂志上的车辆。 您可以将车辆名称视为行名称。 让我们快速浏览一下其中的一些列。 这些列包括 MPG 或每加仑英里数, CYL,气缸数, 发动机排量(立方英寸), 马力, 车辆重量, 变速箱类型以及其他一些车辆 属性。 现在假设我们只想关注前五行 数据并忽略其他一切。 为此,我们可以使用 head 函数。 这是头,然后是左括号, 接下来是我们要过滤的数据。 在这种情况下,mtcars, 然后是一个逗号, 然后 n 等于 5,右括号。 我将按 Control Enter 来运行这行代码。 现在我们开始。 我们有数据集的前五行。 如果我们想要不同的行数,我们可以输入 而是使用不同的 n 值。 这可能是 10 或 15 或 100 或尽可能多的行 我们想看到的数据。 如果我们想查看数据集的最后五行怎么办 而不是前五行? 好吧,我们可以使用 tail 函数。 Tail 会将最后几行返回到您的规范。 要获取最后几行,您可以输入 tail、括号, mtcars, 然后是一个逗号,然后你猜对了,n 等于五, 后跟一个右括号。 我会按下control键并输入, 这将输出最后五行。 头和尾都很方便。 当我只想看到第一个或 数据集的最后几行。 但为了实现稳健的过滤,我们需要通过以下方式学习过滤 索引或逻辑向量。 让我们看看这些。 为了引入索引过滤,假设我们只想要 mtcars 数据集中的第六行到第十行。 Head 和 tail 函数对此不起作用,但我们可以划船 以及我们想要的数据的列过滤器。 要按索引过滤,我们首先输入 mtcars, 后面跟着一个方括号, 然后在方括号内,我们将键入索引 对于我们想要过滤的内容。 让我们快速尝试一下,输入 6 个冒号 10。 六冒号 10 与我们输入六、七是一样的, 八、九、十。 让我们在自己的行上运行 6 个冒号 10,这样您就可以在 行动。 正如你所看到的,我们得到了 6、7、8、9、10。 好的,我们将六个冒号 10 放在方括号中,然后 我们将输入一个右括号,然后按 Control 并 Enter。 我们得到了什么? 在输出中,我们看到所有行,但只有第六行到第二行 第 10 列,以及行标签。 出色地, 这不完全是我们想要的。 要获取行而不是列,我们需要添加 10 后面加上逗号,然后运行代码。 让我们继续尝试一下。 现在我们通过索引值获取正确的行。 我想补充一点,我们可以按列过滤 和索引值同时。 可以在逗号后面添加列索引值。 如果我们只想要前两列数据和第六列数据 到第 10 行,我们可以在后面添加一个冒号和两个冒号 逗号。 让我们继续运行这段代码。 空车,方括号,六冒号10, 逗号, 一个冒号两个, 右方括号。 伟大的。 这将返回两列,即 MPG 列,以及 第六到第十行的圆柱列。 现在我们了解了索引过滤的语法, 我们可以开始添加逻辑运算符来确定 我们要使用的索引值。 让我们考虑以下几点。 假设我们想要返回几排空车,其中英里数 每加仑超过25。 我们想知道哪些行适合汽油充足的汽车 里程按 1974 年标准计算。 这是我们可以做的。 我们可以输入which函数,并在其中输入 空车,美元符号,然后 MPG。 所以我们有空车的 MPG 列,我们想要表达 大于 25。 让我们返回这行代码。 它返回了我们想要的行号,第 18、19、20、26、27 行, 和28。 这些就是我们需要的索引值。 我们可以继续将这些价值观置于我们的 支架进行过滤。 例如空车、方括号、18、逗号、 右括号将过滤以显示我们想要的第一行, 但我们不需要这样做。 我们可以将过滤器写在方括号之间。 让我们继续这样做吧。 所以我们有空车,方括号, 哪个, 括号, 空车、美元符号、MPG、大于 25、 右括号, 逗号,然后是右方括号。 我们将继续按下 Control 键并同时输入 时间。 现在我们已经成功过滤数据以仅显示 每加仑行驶里程超过 25 英里的汽车。 现在我们已经了解了索引过滤,让我们看看如何 可以表达同样的事情,但用更少的代码。 请记住,which 语句返回行号 18、19, 20、26、27 和 28。 让我们删除which语句并只输入空 汽车、美元符号、MPG、大于 25、以及按键控制和 进入。 在输出中,我们得到一个逻辑向量。 我们得到的值是 false, false, false, false, false, false, false, false, false, false, 一直到第18个值 名单,这是真的。 第18、19、20、26、27、28个值全部显示 是真的。 我们可以将这个逻辑向量添加到方括号之间 筛选。 为了好玩,让我们继续这样做吧。 这是粘贴在方括号之间的逻辑向量。 如果我们运行这行代码,我们将得到其中的行 每加仑行驶里程大于 25 英里。 但不是实际输入这个长逻辑向量 在方括号之间,我们可以输入空车, 方括号, 空车、美元符号、MPG、大于 25、逗号、结束 方括号,然后运行这行代码。 和以前一样,我们已经成功地将空车过滤为仅 显示每加仑英里数大于 25 的行。 关于逻辑向量要记住的一件事是它们 可以回收利用。 我的意思是,真值和假值的向量确实 不必与它们正在过滤的数据的长度相同。 例如,您可以输入 false, false, true 返回 每第三排。 或者为 false、true 则每隔一行返回一次。 或 true 返回所有行。 或者 false 不返回任何行。 所有这些都在方括号之间。 这种过滤在以下情况下非常有用 就像过滤掉奇数行或偶数行时一样。 但如果你有一个逻辑测试,它也可能被误用 与您正在过滤的数据的长度不同。 在下一个视频中,我们将看看如何组合多个 一起过滤,然后创建摘要 过滤后的数据。 感谢您的观看。