我有一系列数据框,在其中有标识“开始”和“中间”观察值的变量。如果我想创建每个小组,总是会有一个开始观察,一个或多个中间观察。这些类别是根据我数据框中的其他变量分配的。
我希望有一种方法(最好是在dplyr中),R会为每个第一组和中间观察组创建一个新组,以便每次在我的初始变量中出现“开始”时,都会在其中创建一个新类别第二个。
E.G。
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"
答案 0 :(得分:2)
您可以使用例如
(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")])