создать индекс на основе категориальной переменной - PullRequest
0 голосов
/ 29 января 2019

У меня есть серия данных, в которой у меня есть переменная, которая идентифицирует наблюдения «начала» и «середины».Всегда есть одно начальное наблюдение и одно или несколько промежуточных наблюдений, если каждую группу я бы хотел создать.Эти категории были назначены на основе других переменных в моем фрейме данных.

Я бы хотел, чтобы (предпочтительно в dplyr) R создавал новую группу для каждого набора первых и средних наблюдений, чтобы каждый раз«start» появляется в моей начальной переменной, во второй создается новая категория.

EG

     Var1     Var2
 [1] "start"  "A"
 [2] "mid"    "A"
 [3] "start"  "B" 
 [4] "mid"    "B"
 [5] "mid"    "B"
 [6] "mid"    "B"
 [7] "mid"    "B"
 [8] "start"  "C"
 [9] "mid"    "C"
[10] "mid"    "C"

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать, например,

(df$Var2 <- cumsum(df$Var1 == "start"))
# [1] 1 1 2 2 2 2 2 3 3 3

, если вы хотите просто целое число для представления групп, или, как в вашем примере,

(df$Var2 <- LETTERS[cumsum(df$Var1 == "start")])
# [1] "A" "A" "B" "B" "B" "B" "B" "C" "C" "C"

В dplyr, что соответствует

df %>% mutate(Var2 = cumsum(Var1 == "start"))
df %>% mutate(Var2 = LETTERS[cumsum(Var1 == "start")])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...