2016-10-06 22 views
0

我想合併兩列來完成對方。下面是我要合併如何用另一列完成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」。代碼在它們上創建一個空間。

回答

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 
0

隨着data.table可以inser一個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,並設置這些BC值。

0

下面是簡單的解決辦法:

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

正確的方法是'is.nan(DF $ V1)' – Sotos

+0

若它是一個文本或因子變量。文本''NaN''將返回'FALSE'到'is.nan'。 – JDL

相關問題