我想在数据帧中插入最后一行,该数据帧将显示正值之和或每列负值之和,无论哪个总和具有最大幅度。
最终表格如下所示,最后一行(“MaxAmplitude”)是我想要获得的结果:
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)))
答案 0 :(得分:2)
apply
还会返回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