назначить уникальный идентификатор на основе каждого нового экземпляра значения и назначить этот же идентификатор последующим повторным значениям - PullRequest
0 голосов
/ 30 ноября 2018

Хотите сделать что-то подобное в R, но нужно присвоить то же значение последующим значениям «0» после каждого нового экземпляра «1».Таким образом, мои данные выглядят так:

Val
  1
  0
  0
  0
  1
  0
  1
  0
  0 
  0
  0

и мне нужно присвоить уникальный идентификатор, чтобы он выглядел так:

 Val  ID
  1    1
  0    1
  0    1
  0    1
  1    2
  0    2
  1    3
  0    3
  0    3
  0    3
  0    3

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Использование 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
0 голосов
/ 30 ноября 2018

Использование -

df$ID <- cumsum(df$Val)

Выход

   Val ID
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...