Учитывая следующие данныеDplyr доступ построчно весь столбец
A B
1 1 2
2 2 2
3 3 3
4 4 4
5 5 4
Для каждой строки я хотел бы найти индекс, где А превышает B в первый раз. Поэтому требуется ответ:
A B NextIndex
1 1 2 3
2 2 2 3
3 3 3 4
4 4 4 5
5 5 5 5
Мой подход с dplyr
является
A_col<-foo$A
foo %>% rowwise() %>% mutate(NextIndex=which(A_col-B>0)[1])
Мой фактический data.frame несколько миллионов строк и время обработки резко возрастает. Обратите внимание, что я ссылаюсь на полный A_col
в каждом сравнении строк, и я пробовал версию с использованием row_number()
, но не добился значительного улучшения скорости. Кроме того, обратите внимание, что A и B на самом деле являются POSIXct
переменными в моем файле данных и будут строго возрастать во времени, но не периодическими суммами.
Как повысить эффективность этого выражения?
@ user5199932 Нет «спасибо», примите ответ. –