我有2个R数据帧.
df1 <- data.frame(a = c(1, 2, NA), b = c(10, NA, 2), c = c(NA, NA, 1))
df2 <- data.frame(a = c(NA, NA, 3), b = c(NA, 5, NA), c = c(6, NA, NA))
Run Code Online (Sandbox Code Playgroud)
目前在价值观df1是NA在df2反之亦然.某些值都NA在两个数据框中.我想创建一个新的数据框,其中包含值df1和df2存在值的值,而不会丢失列名和行名.
我能想到的一个简单的解决方案是使用for循环.
df_merged <- df1
for(i in 1:nrow(df_merged)){
for(j in 1:ncol(df_merged)){
if(is.na(df_merged[i,j])){
df_merged[i,j] = df2[i,j]
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,df_merged将是这个
df_merged
a b c
1 1 10 6
2 2 5 NA
3 3 2 1
Run Code Online (Sandbox Code Playgroud)
我知道R中的for循环非常慢.有没有更好的解决方案呢?
试一试:
df1[is.na(df1)]<-df2[is.na(df1)]
df1
# a b c
#1 1 10 6
#2 2 5 NA
#3 3 2 1
Run Code Online (Sandbox Code Playgroud)