繁体   English   中英

R dplyr 过滤器 function 每隔一行删除

[英]R dplyr filter function remove every other row

我将R dplyr::filter function 应用于nycflights13航班数据集。 我正在尝试 select 仅在 11 月和 12 月的航班,使用两个替代脚本。

library (tidyverse) 
library (nycflights13)

1 df1 <- filter (flights, month == 11 | month == 12)

2 df2 <- filter (flights, month == c(11,12))

df1产生了预期的结果(总共有 55403 个观察值), df2也产生了,但是数据集只包含一半的观察值(总共 27702 个)。 df2已删除每隔一行。

我的问题是:有人知道为什么吗? 我知道df2语法不正确,但我试图理解为什么它会产生它所做的结果。

谢谢

我的问题是:有人知道为什么吗?

R 会在矢量不足以满足您的需要时回收它们。 在 df2 语法中, filter将过滤第 1 行中的月 = 11、第 2 行中的月 = 12、第 3 行中的月 = 11...

您应该最终得到来自 11 月的航班,这些航班来自原始数据的奇数行,以及 12 月的航班来自原始数据的偶数行。

也许:

df2 <- filter (flights, month %in% c(11,12))

使用==时的代码只能考虑向量的第一个元素。 此外, | 运算符看起来像是分别评估每个条件,而==正在同时评估条件。

同意@Duck 关于使用|的区别==

但这还不能解释为什么 R 每隔一行就会切断。

我还在下面运行了两个单独的命令,分别仅过滤 12 月或 11 月的航班。 并且 2(28135 和 27268)的观察平均值与df2 (27702)中的观察数相同

df3 <- filter (flights, month == 11)

df4 <- filter (flights, month == 12)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM