代码之家  ›  专栏  ›  技术社区  ›  user8453031

向数据帧添加一行,显示幅度(正值或负值之和的最大值)

  •  0
  • user8453031  · 技术社区  · 7 年前

    我想在数据帧中插入最后一行,显示每列的正值和或负值和,以振幅最大的为准。

      c("A", "B", "C", "Max Amplitude")  X1  X2  X3  X4  X5
    1                                 A -30  10  10  -2   8
    2                                 B   5  50 100 -10 -10
    3                                 C -10 -30   1  -1   3
    4                     Max Amplitude -40  60 111 -13  11
    

    我的想法是一种多步骤方法,我会连续添加几行:

    • 第一行为正值之和
    • 第二行求负值之和

    此外,我不知道如果负值之和具有最大幅度,我如何才能显示负号(如果我比较绝对值,我将丢失此信息)。

    有没有人能帮我解决这个问题? 非常感谢你的帮助!

    df <- cbind(c("A","B","C"),data.frame(matrix(c(-30,5,-10,
                                                           10,50,-40,
                                                           10,100,1,
                                                           -2,-10,-1,
                                                           8,-10,3
                                                           ), nrow = 3, ncol = 5)))
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   BENY    7 年前

    这是你想要的吗?而且 apply 返回a matrix data.frame

    apply(df[,2:6],2,function(x) sum(x[which((x>0)==(sum(x)>0))]))
    
    
     X1  X2  X3  X4  X5 
    -40  60 111 -13  11 
    

    只是 df[nrow(df)+1,]=c('Max Amplitude',c(apply(df[,2:6],2,function(x) sum(x[which((x>0)==(sum(x)>0))]))))

    > df
      c("A", "B", "C")  X1  X2  X3  X4  X5
    1                A -30  10  10  -2   8
    2                B   5  50 100 -10 -10
    3                C -10 -40   1  -1   3
    4    Max Amplitude -40  60 111 -13  11