Сравнение элементов вектора с записями во фрейме данных - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть фрейм данных df с полем date, которое содержит даты (класса Date). (Они бывают последовательными датами, как временные ряды, но не обязательно для этого вопроса.)

У меня есть вектор v, который содержит несколько дат, каждая из которых соответствует «событие».

Я хочу создать новый столбец df$num_events следующим образом: я хочу, чтобы значение df$num_events[i] было числом дат события от v, которое меньше или равен df$date[i]. Таким образом, df$num_events будет представлять собой общее количество событий, которые произошли в или перед каждой датой в df$date.

Я знаю, что могу использовать for l oop, но Есть ли симпатичный способ сделать это элегантно в Tidyverse? Я попробовал это:

df %>% mutate(num_events = sum(v <= date))

, но сумма хочет объединиться по всем df$date, так что это не работает. Я чувствую, что может быть способ справиться с do, но я все еще не совсем понимаю, как использовать do.

Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

Мы можем использовать функцию rowwise:

df %>% rowwise() %>% mutate(num_events = sum(v <= date))
...