копировать значения из разных столбцов в зависимости от условий (код r) - PullRequest
0 голосов
/ 14 марта 2020

enter image description here

У меня есть данные, подобные одному на рисунке, где есть два столбца (Cday, Dday) с некоторыми пропущенными значениями. Не может быть строки, в которой есть значения для обоих столбцов; есть значение либо в одном столбце, либо в другом, либо ни в одном.

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

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Пакет dplyr имеет функцию coalesce.

library(dplyr)
df <- data.frame(id=1:8, Cday=c(1,2,NA,NA,3,NA,2,NA), Dday=c(NA,NA,NA,3,NA,2,NA,1))
new <- df %>% mutate(new = coalesce(Dday, Cday, na.rm=T))
new
#  id Cday Dday new
#1  1    1   NA   1
#2  2    2   NA   2
#3  3   NA   NA  NA
#4  4   NA    3   3
#5  5    3   NA   3
#6  6   NA    2   2
#7  7    2   NA   2
#8  8   NA    1   1
0 голосов
/ 14 марта 2020

Поскольку ни одна строка не имеет значения для обоих, вы можете просто суммировать два существующих столбца. Предположим, ваш фрейм данных называется df.

df$'new' = rowSums(df[,2:3], na.rm=T)

. Это суммирует строки, удаляя NA и давая вам то, что вы хотите. (Примечание: вам может потребоваться изменить нумерацию столбцов, если у вас больше столбцов, чем вы показали).

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