如果您有两个数据帧
df_A<-data.frame(AA =c(1,2,3), AB =c(1,4,9)
df_B<-data.frame(BA =c(4,5), BB = c(16,25))
如果我做df_C<-df_A[1,] + df_B[1,]
然后我得到AA = 5
和AB = 17
基本上它是从两个数据框中添加第一行。
但如果我df_D<-df_A[3,]+df_B[3,]
,那么我会AA = NA
和BB = NA
NA
的原因是因为我在df_B
中没有第三行。
有没有任何价值存在的方法你只需得到可用的总和?在上面的示例中,我希望df_D
为AA = 3
和AB = 9
。
答案 0 :(得分:1)
如果你只对这笔钱感兴趣,快速解决方法就是用0填充空行:
update <- function(df, max_rows) rbind(df,rep(rep(0,ncol(df)), max_rows-nrow(df)))
max_rows <- max(nrow(df_A),nrow(df_B))
df_B <- update(df_B, max_rows)
df_A <- update(df_A, max_rows)
答案 1 :(得分:0)
这个怎么样:
AddAndFix <- function (x,y)
{
z <- x + y
if (anyNA(z))
{
if (anyNA(x))
{
return(y)
}
return(x)
}
else return(z)
}
AddAndFix(df_A[1,],df_B[1,])
AddAndFix(df_B[3,],df_A[3,])
AddAndFix(df_A[3,],df_B[3,])