Я борюсь с некоторыми вещами, связанными с данными, которые, как мне кажется, должно быть легко решить (с lapply или что-то в этом роде), но я просто не могу заставить его работать (и я, очевидно, чертовски ржавый из этого материала). Я работаю с набором веб-данных, структурированным следующим образом:
df <- data.frame("ID" = c(1, 1, 1, 2, 3, 3),
"URL_visit" = c(1, 2, 3, 1, 1, 2), # e.g. customer ID #1 has visited 3 pages
"URL_name" = c("home", "login", "product_page", "home", "home", "product_page"),
"duration" = c(14, 40, 233, 8, 76, 561),
"home" = c(1, 0, 0, 1, 1, 0),
"login" = c(0, 1, 0, 0, 0, 0),
"product_page" = c(0, 0, 1, 0, 0, 1)
)
Итак, в основном поле идентификатора клиента, номер для каждого события для каждого клиента, URL-адрес, который они посетили в этом событии, за которым следует столбец для каждый URL-адрес с индикатором (1/0), посетил ли клиент этот конкретный URL-адрес в этом событии.
Моя цель - получить фрагмент кода, который заменяет индикаторы 1/0 продолжительностью, если совпадение ( 1) найден и сохраняет 0, если нет. Другими словами:
- (1) Построчно проверяет значения столбцов URL (в моем примере столбцы 5: 7, также известные как home, login, product_page. У меня также есть вектор со столбцом имена) в 1 или 0
- (2) Если он находит 1, вставляет значение из столбца duration , в противном случае 0.
Либо замена всех текущих (0/1) значений в столбцах URL-адресов продолжительностью, где это применимо, или создание нового набора столбцов (например, "home_duration") работает для меня.
Пример решения вручную:
df %<>% dplyr::mutate(home_duration = if_else(home == 1, duration, 0))
Но, конечно, моя цель - автоматизировать это и провести это для всего набора URL-столбцов (передача вектора с именами столбцов URL).
Помощь очень приветствуется ! Спасибо! :)