希望在R中执行类似的操作,但是需要在每个新的'1'实例之后为后续的'0'值分配相同的值。所以我的数据看起来像这样:
Val
1
0
0
0
1
0
1
0
0
0
0
,并且需要分配唯一的ID,如下所示:
Val ID
1 1
0 1
0 1
0 1
1 2
0 2
1 3
0 3
0 3
0 3
0 3
答案 0 :(得分:2)
使用-
_Imaginary
输出
df$ID <- cumsum(df$Val)
答案 1 :(得分:0)
使用dplyr
和zoo
:
df %>%
group_by(Val) %>% #Grouping by Val
mutate(temp = ifelse(Val == 0, NA, sequence(n()))) %>% #Assigning NA if Val is zero, otherwise creating a sequence around the ones
ungroup() %>%
mutate(ID = na.locf(temp)) %>% #Filling the NAs with the last non-NA case
select(-temp)
Val ID
<int> <int>
1 1 1
2 0 1
3 0 1
4 0 1
5 1 2
6 0 2
7 1 3
8 0 3
9 0 3
10 0 3
11 0 3