如何用另一列完成R中的缺失列

时间:2016-10-06 13:56:55

标签: r merge

我想合并两列以完成彼此。以下是我要合并的数据示例

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有两个,即&#34; A&#34;和&#34; A&#34 ;.代码在它们上面创建了一个空格。

3 个答案:

答案 0 :(得分:0)

这是一种方式

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

答案 1 :(得分:0)

使用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]

在此处更新BNA的行,并将B设置为C中的值。

答案 2 :(得分:0)

这是更简单的解决方案:

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