Как создать новый столбец, добавив два столбца с приоритетом для одного из них? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть следующий фрейм данных, и я хочу получить C, как показано. Проверка, есть ли значение для A, появится в C. Если в A нет значения, то C примет значение B.

data <- 
structure(list(A = c(15L, 20L, NA, 8L), B = c(7L, NA, 9L, 6L), 
    C = c(15L, 20L, 9L, 8L)), class = "data.frame", row.names = c(NA, 
-4L))

Я пробовал что-то вроде:

data$C <- coalesce(data$A, data$B)

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вот базовое решение R с использованием ifelse

data$C <- with(data,ifelse(is.na(A),B,A))

или which + aggregate

data$C <- data[as.matrix(aggregate(col~row,which(!is.na(data),arr.ind = TRUE),FUN = min))]
0 голосов
/ 18 февраля 2020

Мы можем использовать

data %>% mutate(C = coalesce(A, B))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...