Как заполнить отсутствующий столбец в R другим столбцом

#r #merge

#r #слияние

Вопрос:

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

 Movie  |  Rating(New) | Rating (Old) |
A  ................A...................Nan
B  ................B...................Nan
C  ................NaN...................C
D ................NaN...................A
  

Я хочу создать новое имя столбца, которое будет содержать их оба

 Movie  |  Rating(New) | Rating (Old) | Rating
A  ................A...................Nan................A
B  ................B...................Nan................B
C  ................NaN...................C................C
D ................NaN...................A................A
  

Я попробовал этот код

 df$Rating <- paste(df$Rating(New),df$Rating(Old)
  

Но A в рейтинге есть два, которые являются «A» и «A». Код создает пробел на них.

Ответ №1:

Вот один из способов

 df <- read.csv(text="
A,B,C
1,1,NaN
2,2,NaN
3,NaN,3
4,NaN,1
", colClasses = rep("numeric", 3))
df$D <- dplyr::coalesce(df$A, df$B)
df
#   A   B   C D
# 1 1   1 NaN 1
# 2 2   2 NaN 2
# 3 3 NaN   3 3
# 4 4 NaN   1 4
  

Ответ №2:

С data.table помощью вы можете вставить значение одного coloumn в другое:

 dt <- fread(text="
A,B,C
1,1,NaN
2,2,NaN
3,NaN,3
4,NaN,1
")
dt[is.na(B), B:=C]
  

Здесь вы обновляете строки, где B находится NA , и устанавливаете B для них значение в C .

Ответ №3:

Вот более простое решение:

 df$v3 = ifelse(df$v1 == "NaN", df$v2, df$v1)
  

Комментарии:

1. Нет, если это текстовая или факторная переменная. Текст "NaN" вернется FALSE к is.nan .