【发布时间】:2015-04-28 12:34:39
【问题描述】:
考虑以下dataset
为什么我在做的时候会得到不同的结果:
library(dplyr)
df %>%
filter(!(w >= 1 | lag(w >= 1, default = F))) %>%
filter(lag(t, default = T) != t) %>%
summarise(median = median(r), mad = mad(r))
结果:
median mad
1 664 142.3296
和
df %>%
filter(!(w >= 1 | lag(w >= 1, default = F)),
lag(t, default = T) != t) %>%
summarise(median = median(r), mad = mad(r))
这给出了:
median mad
1 671 152.7078
【问题讨论】:
-
我猜,在第一种情况下,第二个过滤器适用于已过滤的数据,但在第二种情况下,
lag(t, default=T)正在处理原始数据集。因此,您将分别获得89和97行。 -
这两种过滤观察结果的不同方法会给出不同的 data.frames 来计算中值和 mad。
%>%应该读作“then”。因此,在第一种情况下,您使用第一个条件filter(!(w >= 1 | lag(w >= 1, default = F)))过滤掉与过滤器不匹配的所有内容,然后过滤第二个条件。在第二种情况下,它是一个大过滤器。