2017-07-27 10 views
1

till_5の合計を最後に新しい行にGrand totalと加算したいと思います。私はcolSumsを試していますが、上記のエラーが表示されます。3列目に列の和を加算する方法

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 

答えて

3

colSumsは、data.frameまたはmatrixで動作します。データを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列があるようですので、我々は要素

+0

感謝の同じ番号でrbindに必要akrun!あなたが合計のデータフレームに複数の列を持っているなら、私を助けてくれますか?何が必要なのか。したがって、これらはレポートのタイミングごとに1つ以上の列になる可能性があります。このソリューションは、列のみを認識すると機能します。 df1 = rbind(df1、c( "Grand_Total"、 "colSums(df1 [、3:ncol(df1)]、na.rm = T))) これらは複数の列である場合に機能します1列の場合、エラーが表示されます。 #エラーのcolSums(df1 [、3]、na.rm = T): # 'x'は少なくとも2次元の配列でなければなりません –

+0

@VishanRanaこれは、あなたが '' colSums(df1 [、3:ncol(df1)、drop = TRUE]、na.rm = T)))) ')'を使うか、 '' colSums(df1 [3:ncol(df1)] 、na.rm = T))) ' – akrun

+1

ありがとうございました! –

1

あなたはsum(df1$till_5)をしたいです。これは1つの値なので、データフレームのまったく新しい行に割り当てる必要はありません。

関連する問題