我有一个仪器,它按设定的时间间隔进行读数,并希望在活动状态下依次识别每个事件,这可以通过基线测量中的偏差来看出。
我可以确定它何时与ifelse()
语句一起使用,但是我希望每组行都根据事件发生的顺序(即事件1,事件2等)指定ID。
以下是r(首选语言)中情况的简化示例:
original_df <- tribble(
~rownum, ~context_val,
#-------|-------------
1, 0.2,
2, 0.3,
3, 0.2,
4, 20,
5, 28,
6, 22,
7, 0.4,
8, 0.2,
9, 21,
10, 18,
11,0.1
)
desired_outcome <- tribble(
~rownum, ~context_val, ~sequentail_tag,
#-------|-------------|----------------
1, 0.2, NA,
2, 0.3, NA,
3, 0.2, NA,
4, 20, 1,
5, 28, 1,
6, 22, 1,
7, 0.4, NA,
8, 0.2, NA,
9, 21, 2,
10, 18, 2,
11,0.1, NA
)
context_val
字段将确定仪器的使用时间,顺序标签将标识行所属的事件。
答案 0 :(得分:1)
有点费解,但是它起作用了……您可以看到基本的逻辑……
original_df %>%
mutate(
runs1 = ifelse(context_val > 15 & lag(context_val < 15), 1, 0),
runs2 = cumsum(runs1),
sequential_tag = ifelse(context_val > 15, runs2, NA)
)
# A tibble: 11 x 5
rownum context_val runs1 runs2 sequential_tag
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 0.2 0 0 NA
2 2 0.3 0 0 NA
3 3 0.2 0 0 NA
4 4 20 1 1 1
5 5 28 0 1 1
6 6 22 0 1 1
7 7 0.4 0 1 NA
8 8 0.2 0 1 NA
9 9 21 1 2 2
10 10 18 0 2 2
11 11 0.1 0 2 NA
>