Ниже у меня есть кадр данных с последовательными значениями в первом столбце (col1). Когда во втором столбце (col2) встречается 'q', необходимо вычесть 1 из соответствующего значения в столбце 1 и всех остальных значений, следующих в столбце 1. Когда встречается второй q, опять же, дополнительная 1 имеет следует вычесть из соответствующего значения в столбце 1 и всех остальных значений, следующих в столбце 1. et c. Обратите внимание, каждый новый фрейм данных имеет разные значения в столбцах 1 и 2. Мне было интересно, какой подход должен быть правильным? Я пробовал подмножество и операторы if else. Следующий код не может произвести последовательную нумерацию.
df$col3 = ifelse(df$mut!="q",df$col1, ifelse(grepl("q",df$col2),(df$col1-1),0) )
пример набора данных
col1 = c(115,116,117,118,119,120,121,122,123,124)
col2 = c('s1','s2','s3', "q", "s4", "q", "s5", "q", "q", "s6")
df = data.frame(col1, col2)
col1 col2
115 s1
116 s2
117 s3
118 q
119 s4
120 q
121 s5
122 q
123 q
124 s6
Ожидаемый результат должен выглядеть следующим образом:
col1 col2 col3
115 s1 115
116 s2 116
117 s3 117
118 q 117
119 s4 118
120 q 118
121 s5 119
122 q 119
123 q 119
124 s6 120
Спасибо