如何在第三行添加列的总和

时间:2017-07-27 12:33:31

标签: r

我希望将till_5的总和作为Grand total添加到新行中。我正在尝试colSums,但它显示出错误。

df1=rbind(df1,c("Grand Total",colSums(df1[,3],na.rm = T)))
#Error in colSums(df1[, 3], na.rm = T) : 
#  'x' must be an array of at least two dimensions

数据集(df1)

origin  destination_city2   till_5
A   Chennai 72
B   Coimbatore  4
C   Jaipur  1
D   Ajmer   3
E   Jaipur  4
F   Kishangarh  1

2 个答案:

答案 0 :(得分:3)

colSums适用于data.framematrix。当我们将数据子集化为vectordf1[,3])时,它会丢失维度。如果我们需要colSums(df1[3])colSums(df1[,3, drop = FALSE])。但是,对于单个列vector,只需要sum

rbind(df1, list(origin = "GrandTotal", destination_city2 = "", 
                    till_5 = sum(df1$till_5)))
#       origin destination_city2 till_5
#1          A           Chennai     72
#2          B        Coimbatore      4
#3          C            Jaipur      1
#4          D             Ajmer      3
#5          E            Jaipur      4
#6          F        Kishangarh      1
#7 GrandTotal                       85

另外,在OP的例子中,似乎有3列,所以我们需要rbind具有相同数量的元素

答案 1 :(得分:1)

你想要sum(df1$till_5)。它只是一个值,因此您可能不希望将其分配给数据框中的整个新行。