如何有条件地将id值迭代到dataframe

如何有条件地将id值迭代到dataframe,r,R,我有一个如下所示的数据集,我想知道如何以编程方式根据第一次出现的值有条件地添加一个新列 我实际使用的数据是使用ldply(myfiles,function(x)read\u excel(x,col\u names=FALSE,range=“sheetname!A1:F22”))在目录中加载各种excel文件的循环。。下面是这个问题的简化版本 #Creating dataset id<- c('1', '2', '3') first_name= c("Name", "John", "Sue"

我有一个如下所示的数据集,我想知道如何以编程方式根据第一次出现的值有条件地添加一个新列

我实际使用的数据是使用
ldply(myfiles,function(x)read\u excel(x,col\u names=FALSE,range=“sheetname!A1:F22”))在目录中加载各种excel文件的循环。
。下面是这个问题的简化版本

#Creating dataset
id<- c('1', '2', '3')
first_name= c("Name", "John", "Sue", "Bob", "Name", "Erin", "Becky", "Name", "Robert")
value= c(NA, 60, 0, 100, NA, 29, 49, NA, 5)
df<- data.frame(first_name, value)
df

  first_name value
1       Name    NA
2       John    60
3        Sue     0
4        Bob   100
5       Name    NA
6       Erin    29
7      Becky    49
8       Name    NA
9     Robert     5

我们可以使用

library(dplyr)
df %>%
   mutate(id = cumsum(is.na(value)))
#   first_name value id
#1       Name    NA  1
#2       John    60  1
#3        Sue     0  1
#4        Bob   100  1
#5       Name    NA  2
#6       Erin    29  2
#7      Becky    49  2
#8       Name    NA  3
#9     Robert     5  3

它只是
df$id,但它计算NA,而不是OP要求的名称的出现次数。在这种情况下,它们是相同的,但不是一般的。
library(dplyr)
df %>%
   mutate(id = cumsum(is.na(value)))
#   first_name value id
#1       Name    NA  1
#2       John    60  1
#3        Sue     0  1
#4        Bob   100  1
#5       Name    NA  2
#6       Erin    29  2
#7      Becky    49  2
#8       Name    NA  3
#9     Robert     5  3