В R я хочу создать две новые переменные, если проверяемая переменная имеет пропущенные значения - PullRequest
1 голос
/ 23 сентября 2019
df <- data.frame(replicate(10,sample(0:100,1000,rep=TRUE)))
eee <- as.data.frame(lapply(df, function(cc) cc[ sample(c(TRUE, NA), prob = c(0.85, 0.15), size = length(cc), replace = TRUE) ]))
View(eee)

Это дает мне фрейм данных с отсутствующими данными.

Если переменная в моем текущем фрейме данных содержит пропущенные значения, я хочу создать две новые переменные.Первым было двоичное «да», которого не было, или «нет», которого не было.Я хочу, чтобы вторая переменная была такой же, как и исходная, если переменная не отсутствует.Если он отсутствует, я хочу вменять среднее значение исходной переменной для моего нового столбца.

Я не уверен, как написать код, чтобы выполнить эту проверку всего набора данных вместо того, чтобы выполнять каждую переменную по отдельности.

Спасибо за помощь!

1 Ответ

0 голосов
/ 23 сентября 2019

Я разработал что-то грубое, но эффективное.

df <- data.frame(replicate(10,sample(0:100,1000,rep=TRUE)))

eee <- as.data.frame(lapply(df, 
  function(cc) cc[ sample(c(TRUE, NA), prob = c(0.85, 0.15), size = length(cc), replace = TRUE) ]))



replace_fn1 <- function(x) ifelse(is.na(x), "yes", "no")
pt1 <- apply(eee, c(1, 2), replace_fn1)


col_means <- as.data.frame(t(apply(eee, 2, mean, na.rm = TRUE)))

#set up df with same size of all column means

col_means <- as.data.frame(matrix(col_means, 
                          nrow = 1000, ncol = 10, byrow = TRUE))

pt2 <- pt1
na_ind <- which(is.na(eee), arr.ind = TRUE)
pt2[na_ind] <- col_means[na_ind]

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