R сравнить / отметить / разность дней / пропустить ту же строку транзакции - PullRequest
1 голос
/ 03 октября 2019

Мне обычно удавалось это выяснить, хотя большинство приведенных здесь примеров не связаны с финансами, а связаны с статистикой. Вот моя проблема ...

Я пытаюсь провести сплит-анализ. Я хочу иметь возможность использовать свой уникальный идентификатор, который я создал, объединяя два столбца и идентифицируя транзакции, выполненные этими учетными записями в течение 3 дней друг с другом.

Моя проблема заключается в том, что все транзакции состоят из 1 строки. Когда я использую следующую формулу:

as.Date(dataframe$column) - as.Date(samedataframe$column) 

Для даты транзакции. Естественно, все выглядит как разница в 0 дней, поскольку она сама вычитается. Кто-то упомянул функции «for» и «next», и я попытался сделать сложный код для этого, но R не понравился (тогда ему не нравилось, что $ указывает на столбец.

Не уверенесли кто-то еще попытался заставить данные распознавать те же строки / уникальную учетную запись, а затем дифференцировать их по датам. Я вижу, как это может вызвать другие проблемы

1 Ответ

1 голос
/ 03 октября 2019

Вам важно научиться спрашивать в SO. Я думаю, что получил то, что вы пытаетесь сделать, но для иллюстрации, чтобы не создать примерный фрейм данных (всегда приводите воспроизводимый пример ваших данных при запросе).

Данные

set.seed(123)

df <- data.frame(
  id = sample(1:3, size = 30, replace = TRUE),
  date = sample(
    seq(as.Date("2019-01-01"),
        by = "day", 
        length.out = 20),
    size = 30,
    replace = TRUE
  )
)

head(df)

  id       date
1  1 2019-01-07
2  1 2019-01-07
3  3 2019-01-19
4  1 2019-01-08
5  2 2019-01-12
6  3 2019-01-11

Если это структура ваших данных, вам просто нужно сгруппировать их по идентификатору, упорядочить данные по дате и выполнить следующие действия.

library(dplyr)

df %>%
  group_by(id) %>%
  arrange(date) %>%
  mutate(days_after = date - lag(date))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...