如何根据R中的过滤器计算记录数

时间:2017-12-18 11:07:13

标签: r dplyr

我需要根据我需要在群组中应用的过滤操作来计算群组中的记录数量

DF

query

我需要计算(或标记)发生了' s-1'组合在' dg-cs' ' v'之前的字段在' dg'。

因此输出将是

rowParser

1 个答案:

答案 0 :(得分:6)

我的方法如下:

library(dplyr)

df %>% 
  group_by(id) %>%  
  mutate(out = dg == "s" & cs == 1 & cumsum(dg == "v") == 0) 

## A tibble: 9 x 4
## Groups:   id [3]
#     id    dg    cs   out
#  <int> <chr> <int> <lgl>
#1     1     s     1  TRUE
#2     1     v     0 FALSE
#3     2     s     0 FALSE
#4     2     v     1 FALSE
#5     2     s     1 FALSE
#6     2     s     0 FALSE
#7     3     s     1  TRUE
#8     3     s     1  TRUE
#9     3     v     1 FALSE

部分cumsum(dg == "v") == 0表示只有dg=="v"尚未针对该特定ID出现时才能为真。