1

我有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"))
4

2 回答 2

2

我们可以用rowid

library(data.table)
df1$ID <- rowid(df1$fruit_name)
于 2021-04-15T16:51:09.700 回答
1

您可以使用cumsum

df1$ID <- cumsum(df1$fruit_name == 'Apple')
于 2021-04-16T01:00:09.137 回答