Существует ли функция R для определения точки касания в пути клиента? - PullRequest
0 голосов
/ 06 мая 2019

Мой информационный кадр содержит столбец с различными точками касания, номерами от 1 до 18. Я хочу знать, какая точка касания приводит к точке касания 10. Поэтому я хочу создать новый столбец, который показывает точку касания, которая возникла до точки касания 10за поездку клиента (PurchaseID).Если точка прикосновения 10 не встречается в поездке клиента, значение может быть НЕДЕЙСТВИТЕЛЬНО или 0. Так, например:

dd <- read.table(text="
PurchaseId  TouchPoint DesiredOutcome
1           8          6
1           6          6
1           10         6
2           12         0
2           8          0
3           17         4
3           3          4
3           4          4
3           10         4", header=TRUE)

Полный набор данных содержит 2.500.000 наблюдений.Кто-нибудь знает, как решить мою проблему?Заранее спасибо.

1 Ответ

0 голосов
/ 06 мая 2019

Во-первых, лучше дать полный воспроизводимый пример кода. Я предлагаю вам взглянуть на библиотеку data.table, которая хороша для обработки больших наборов данных.

library(data.table)
mdata <- matrix(sample(x = c(1:20, 21), size = 15*10, replace = TRUE), ncol = 10)
mdata[mdata==21] <- NA
mdata <- data.frame(mdata)
names(mdata) <- paste0("cj", 1:10)
df_touch <- data.table(mdata)

# -- using for
res <- rep(0, nrow(df_touch))
for( i in 1:10){
        cat(i, "\n")
        res[i] <- i*df_touch[, (10 %in% get(paste0("cj", i)))]
        cat(res[i], "\n")
}

# -- using lapply
dfun <- function(x, k = 10){ return( k %in% x ) }
df_touch[, lapply(.SD, dfun)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...