#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
.