2017-07-27 62 views
1

我想在上一行中添加總和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 

回答

3

colSums適用於data.framematrix。當我們將數據分組到vectordf1[,3])時,它會丟失尺寸。如果是,我們需要做colSums(df1[3])colSums(df1[,3, drop = FALSE])。但是,單個列作爲vectorsum只需要

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具有相同數量的元素

+0

謝謝akrun!如果我在數據框中有多個列,請幫助我解決問題?那麼需要做什麼。所以這些可以按照報告時間表一列或更多,如果我只知道列,這個解決方案將工作。 這顯示錯誤: df1 = rbind(df1,c(「Grand_Total」,「」,colSums(df1 [,3:ncol(df1)],na.rm = T))) 如果這些是多列但爲1列它顯示錯誤: #在colSums中的錯誤(df1 [,3],na.rm = T): #'x'必須是至少兩個維度的數組 –

+0

@VishanRana這是基於刪除(df1 [,3:ncol(df1),drop = TRUE],na.rm = T)))'或者刪除逗號ie colSums(df1 [3:ncol(df1)] ,na.rm = T)))' – akrun

+1

多謝先生! –

1

你想sum(df1$till_5)。這只是一個值,所以你可能不想將它分配給數據框中的整個新行。

相關問題