Справочная информация:
Я работаю с большим набором данных, который содержит продольные данные об игровом поведении 195 318 участников. Данные основаны на полном отслеживании поведения азартных игр электронов c в операторе азартных игр. Данные об игровом поведении агрегируются на ежемесячном уровне, всего 70 месяцев. У меня есть разделительная переменная ID участников, временная переменная (месяцы), а также многочисленные переменные игрового поведения, такие как активные дни, сыгранные в течение данного месяца, ставки, сделанные на данный месяц, общие потери за данный месяц и т. Д. c. Участники различаются в том, когда они были активными азартными играми. Один участник мог сыграть на 2, 3, 4 и 7 месяце, другой участник на 3, 5 и 7, а третий на 23, 24, 48, 65 и c. Таким образом, существует значительное количество «пропущенных значений». Однако, поскольку отслеживаются все случаи азартных игр, отсутствие в этом наборе данных означает, что человек не играл в азартные игры. Другими словами, пропущенное равно 0.
Проблема / цель:
Я хочу вменять 0 для пропущенных значений («NA»). Однако Я хочу сделать это только при определенных c обстоятельствах. В частности, я хочу вменить 0 для пропущенных значений в рамках того, что я определяю как «активный период» участника, и оставить все остальное как есть.
Активный период участника - каждый месяц между его первым активным месяцем азартных игр и их последним месяцем. азартные игры. Например, для участника, игравшего в азартные игры в 2, 3, 4 и 7 месяце, я хочу вменять 0 в 5 и 6 месяцы. Каждый второй месяц, то есть от 1 до 9 до 70, я хочу остаться как NA. Я изо всех сил пытаюсь написать код, который достигает этого. Я новичок в R.
Пример кадра данных и кода
Ниже приведен пример кода, который создает кадр данных, который иллюстрирует ключевые характеристики, описанные в моей задаче. В этом коде всего 2 участника, 1 переменная игрового поведения и 10 временных точек («волны»). Я включил фрейм данных в «длинный формат» и «широкий формат», потому что я не уверен, какой из них будет наиболее полезным / информативным. Переменная времени включена в «длинный формат». Мой фактический набор данных представлен в длинном формате, но я знаком с тем, как переключаться между ними.
# Example variables and data frame in long form
# Includes id variable, time variable and example variable
id <- c(1, 1, 1, 1, 2, 2, 2)
time <- c(2, 3, 4, 7, 3, 5, 7)
daysPlayed <- c(2, 2, 3, 3, 2, 2, 2)
dfLong <- data.frame(id = id, time = time, daysPlayed = daysPlayed)
Создано в 2020-03-28 с помощью пакета prex (v0.3.0)
# Example variables and data frame in wide form
# Includes id variable, days played in given month
id <- c(1, 2)
daysPlayed.1 <- c(NA, NA)
daysPlayed.2 <- c(2, NA)
daysPlayed.3 <- c(2, 2)
daysPlayed.4 <- c(3, NA)
daysPlayed.5 <- c(NA, 2)
daysPlayed.6 <- c(NA, NA)
daysPlayed.7 <- c(3, 2)
daysPlayed.8 <- c(NA, NA)
daysPlayed.9 <- c(NA, NA)
daysPlayed.10 <- c(NA, NA)
dfWide <- data.frame(id=id, daysPlayed.1 = daysPlayed.1, daysPlayed.2 = daysPlayed.2,
daysPlayed.3 = daysPlayed.3, daysPlayed.4 = daysPlayed.4,
daysPlayed.5 = daysPlayed.5, daysPlayed.6 = daysPlayed.6,
daysPlayed.7 = daysPlayed.7, daysPlayed.8 = daysPlayed.8,
daysPlayed.9 = daysPlayed.9, daysPlayed.10 = daysPlayed.10)
Создано в 2020-03-28 пакетом Представить (v0.3.0)