title: "Flag Loyalty Conversions" author: "Joshua Gelbard" date: "2/23/2019"
output: pdf_document
knitr::opts_chunk$set(echo = TRUE)
Brand Loyalty Research
A non-brand loyalist is 1.6123 times more likely to complete a booking than a brand-loyalist. Of 14,410 loyalists, 55 completed bookings. Of 116,621 non-loyalists, 727 completed bookings.
library(data.table)
library(tidyverse)
activityDT <- fread("~/Documents/Spring 2019/Brown Datathon/TripAdvisor/activity_data.csv")
hotelDT <- fread("~/Documents/Spring 2019/Brown Datathon/TripAdvisor/hotel_data.csv")
uniqueViewingsDT <- unique(activityDT, by=c("user_id", "hotel_id"))
activityCountDT <- uniqueViewingsDT[user_action == "view", .(totalViewings = .N), by=user_id]
uniqueViewingsDT <- merge(uniqueViewingsDT, activityCountDT, all.x = TRUE, by = "user_id")
activity3orMoreDT <- uniqueViewingsDT[user_action == "view", .N >= 3, by=user_id]
listOfSubset <- pull(activity3orMoreDT[V1 == "TRUE",1])
subsetOfActions <- filter(uniqueViewingsDT, user_id %in% listOfSubset)
subsetOfActions <- as.data.table(subsetOfActions)
#subsetOfActions[ ,group_flag:=character(.N)]
subsetOfActions <- merge(subsetOfActions, hotelDT, all.x = TRUE, by = "hotel_id")
subsetOfActions <- subsetOfActions[parent_brand_name != ""]
brandLoyal <- subsetOfActions[user_action == "view", .(brandViewCount = .N), by=c("user_id", "parent_brand_name")]
brandLoyal <- brandLoyal[brandLoyal[ , .I[which.max(brandViewCount)], by = user_id]$V1]
subsetOfActions <- merge(subsetOfActions, brandLoyal, all.x = TRUE, by = "user_id")
subsetOfActions <- subsetOfActions[parent_brand_name.x == parent_brand_name.y]
loyalists <- subsetOfActions[brandViewCount >= totalViewings-1]
loyalistUserIDs <- unique(loyalists, by="user_id")
loyalistUserIDs <- loyalistUserIDs[, c('user_id', 'parent_brand_name.x'), with = FALSE]
loyalistBookings <- uniqueViewingsDT[user_action == "booking", .N >= 1, by=user_id]
loyalistUserIDs <- merge(loyalistUserIDs, loyalistBookings, all.x = TRUE, by = "user_id")
a <- sum(loyalistUserIDs$V1, na.rm = TRUE)
b <- length(loyalistUserIDs$V1)
loyalCompletedBookingPercent <- a/b
loyalCompletedBookingPercent
nonLoyalists <- subsetOfActions[brandViewCount < totalViewings-1]
nonloyalistUserIDs <- unique(nonLoyalists, by="user_id")
nonloyalistUserIDs <- nonloyalistUserIDs[, c('user_id', 'parent_brand_name.x'), with = FALSE]
nonloyalistBookings <- uniqueViewingsDT[user_action == "booking", .N >= 1, by=user_id]
nonloyalistUserIDs <- merge(nonloyalistUserIDs, nonloyalistBookings, all.x = TRUE, by = "user_id")
a <- sum(nonloyalistUserIDs$V1, na.rm = TRUE)
b <- length(nonloyalistUserIDs$V1)
nonLoyalCompletedBookingPercent <- a/b
nonLoyalCompletedBookingPercent
Log in or sign up for Devpost to join the conversation.