根据分类变量创建索引

时间:2019-01-29 15:31:28

标签: r dplyr

我有一系列数据框,在其中有标识“开始”和“中间”观察值的变量。如果我想创建每个小组,总是会有一个开始观察,一个或多个中间观察。这些类别是根据我数据框中的其他变量分配的。

我希望有一种方法(最好是在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"

1 个答案:

答案 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")])