У меня есть набор данных, который выглядит ниже, и мне было интересно, как программно добавить новый столбец, условно основанный на первом вхождении значения.
Данные, которые я на самом деле использую, представляют собой цикл загрузки различных файлов Excel в каталог с использованием ldply(myfiles, function(x) read_excel(x, col_names = FALSE, range = "sheetname!A1:F22"))
. Ниже приведен упрощенный вариант этой проблемы.
#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
Я хотел бы использовать список, id
, чтобы создать новый столбец на основе первого вхождения условия df[first_name == 'Name']
. Таким образом, строки 1: 4 должны быть на 1 ниже до второго появления условия df[first_name == 'Name']
, где id будет 2 и так далее.
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