添加两个数据帧值但在一个

时间:2017-03-07 17:45:39

标签: r dataframe null add

如果您有两个数据帧

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 = 5AB = 17

基本上它是从两个数据框中添加第一行。

但如果我df_D<-df_A[3,]+df_B[3,],那么我会AA = NABB = NA

NA的原因是因为我在df_B中没有第三行。

有没有任何价值存在的方法你只需得到可用的总和?在上面的示例中,我希望df_DAA = 3AB = 9

2 个答案:

答案 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,])