在示例data.frame
上:
df <- data.frame(V1 = c(1, 3, 4, NA, NA, 6, 9, NA, 10),
V2 = seq(1:9))
以group_by()
的方式使用filter()
会得到以下结果:
df %>%
group_by(miss = !is.na(V1)) %>%
mutate(lag = V1 - lag(V1))
# A tibble: 9 x 4
# Groups: miss [2]
V1 V2 miss lag
<dbl> <dbl> <lgl> <dbl>
1 1. 1. TRUE NA
2 3. 2. TRUE 2.
3 4. 3. TRUE 1.
4 NA 4. FALSE NA
5 NA 5. FALSE NA
6 6. 6. TRUE 2.
7 9. 7. TRUE 3.
8 NA 8. FALSE NA
9 10. 9. TRUE 1.
这正是我想要的,但是我很好奇它是否也打算以这种方式使用group_by()
。
答案 0 :(得分:0)
为了对这个有趣的问题有一个有据可查的答案-正如@Joran所指出的那样,可以从注释中将filter
与表达式一起使用。正如@avid_useR所指出的,它实际上并不类似于case_when
,而是更像=IF(OR(N11="";N12="";N13="");"";SUMIF(N11:N13;"<>"""))
之类的东西,因为没有删除任何行。