0

我想将最后一行插入到数据框中,该行将显示每列正值的总和或负值的总和,以幅度最大的总和为准。

最终表格看起来像这样,最后一行(“MaxAmplitude”)是我想要获得的结果:

  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 -30 1 -1 3
4 最大振幅 -40 60 111 -13 11

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

  • 第一行得出正值的总和
  • 第二行得出负值的总和
  • 第 3 行通过比较两个和的绝对值来测试第 1 行或第 2 行中幅度最大的一个。

我的问题是我想这样做而不必在数据框中添加那么多行。此外,如果负值的总和具有最大幅度,我不知道如何显示负号(如果比较绝对值,我会丢失此信息)。

请问有人对我如何编码有任何解决方案吗?非常感谢你的帮助!

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)))
4

1 回答 1

2

这是你想要的吗 ?另外,apply返回一个matrixdata.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
于 2017-08-18T22:01:31.897 回答