R: захватить значение предыдущего ряда - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть код, который определяет, когда право собственности перешло к новому владельцу. В столбце transition код назначает значение «1» каждый раз, когда происходит переход, и «0», если свойство не было изменено. «1» присваивается новому владельцу перехода. Это помогает мне собирать данные всех новых покупателей.

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

Например, если есть переход между A (продавец) и B (покупатель), я могу в настоящее время только идентифицировать покупателя B (переход = 1), но тоже хочу определить продавца.

Вот код для покупателей:

transitions <- transitions %>%
  group_by(property) %>%
  mutate(transition = ifelse(name != dplyr::lag(name), 1, 0))

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Мне кажется, код продавца похож на код покупателя, только теперь мы хотим найти вышеприведенное, где имя другое.

transitions %>% 
group_by(property) %>%  
mutate(seller = ifelse(lead(transition) == 1 & name!= lead(name), 1, 0))
1 голос
/ 21 февраля 2020

Для меня этот код работал, также используя dplyr::lag(). Обратите внимание, что имя продавца присутствует в первом наблюдении, когда сделка завершена. Если вы хотите, чтобы это было во всех строках, которые вы можете использовать fill

data %>%
  mutate(
    seller = ifelse(transition == 1, lag(name), NA)
  )

В будущем попробуйте использовать минимальный воспроизводимый пример, вам не нужно использовать весь фрейм данных, только несколько строк, которые захватывают проблема, с которой вы столкнулись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...