Генерация последовательностей с нерегулярными шаблонами в R - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь создать столбец, который показывает постоянство по всему полю.Поле является последовательным и числовым, но обычно не увеличивается.По сути, он увеличивается на 7 (когда он заканчивается в 2) и затем на 3 (когда он заканчивается в 9) по каждому идентификатору.Идентификатор может пропустить одну или несколько последовательностей, но затем вернуться к той же схеме.Данные выглядят так:

ID      Col
1       0769
1       0772
1       0779
1       0782
1       0799
1       0802
1       0812
2       0769
2       0772
2       0779
3       0782
3       0799
3       0802
3       0812

Я пытаюсь сгенерировать это:

ID      Col        Persistence
1       0769       1
1       0772       1  
1       0779       1
1       0782       1
1       0799       2
1       0802       2
1       0812       3
2       0769       1
2       0772       1
2       0779       1
3       0782       1
3       0799       2
3       0802       2
3       0812       3

1 Ответ

0 голосов
/ 19 сентября 2018

Если вы просто хотите убедиться, что скачок равен 3 или 7, вы можете написать вспомогательную функцию, которая будет увеличиваться при возникновении скачка другого размера

jumpchange <- function(x) c(0,cumsum(!diff(x) %in% c(3,7)))+1

Затем вы можете применить это к каждомупроще всего группировать с помощью dplyr

library(dplyr)
dd %>% group_by(ID) %>% 
  mutate(persistence = jumpchange(Col))

или вы можете использовать transform/ave только с базовой базой R

transform(dd, persistence=ave(Col, ID, FUN=jumpchange))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...