基于组 R 编号 ID

Numbering IDs based on group R

下面的 dataframe 名为 df1。我想根据它接近 'Apple' 分配一个 ID,它会将 ID 号更改为下一个序号。当分配 'Apple' 时,我希望之后的所有相应标签都是为 'Apple' 分配的标签。但是一旦 'Apple' 出现,它就会上升一个数字,如下面的标签。

非常感谢!

df1 <- data.frame (fruit_name  = c("Apple", "Banana", "Cherry",
                           "Orange", "Blueberry", "Peach",
                           "Apple", "Banana", "Cherry",
                           "Orange", "Blueberry", "Peach",
                           "Apple", "Banana", "Cherry",
                           "Orange", "Blueberry",
                           "Apple", "Cherry"))

进入以下

df2 <- data.frame (ID  = c("1", "1", "1", "1", "1", "1", "2", "2",
                           "2", "2", "2", "2", "3", "3", "3", "3", "3",
                           "4", "4"),
                   fruit_name = c("Apple", "Banana", "Cherry",
                                  "Orange", "Blueberry", "Peach",
                                  "Apple", "Banana", "Cherry",
                                  "Orange", "Blueberry", "Peach",
                                  "Apple", "Banana", "Cherry",
                                  "Orange", "Blueberry",
                                  "Apple", "Cherry"))

我们可以使用rowid

library(data.table)
df1$ID <- rowid(df1$fruit_name)

您可以使用cumsum

df1$ID <- cumsum(df1$fruit_name == 'Apple')