2017-07-27 2 views
1

Ich möchte die Summe von till_5 als Grand total in der letzten Zeile hinzufügen. Ich versuche colSums, aber es zeigt Fehler wie erwähnt.Wie addiert man die Summe der Spalte in der dritten Zeile

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 

Datensatz (df1)

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

Antwort

3

Die colSums arbeitet auf einem data.frame oder matrix. Wenn wir die Daten in eine vector (df1[,3]) unterteilen, verliert es die Dimensionen. In dem Fall müssen wir colSums(df1[3]) oder colSums(df1[,3, drop = FALSE]) tun. Aber für eine einzelne Spalte als vector wird sum nur benötigt

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 

Auch in dem Beispiel des OP, so scheint es 3 Spalten zu sein, also müssen wir rbind mit der gleichen Anzahl von Elementen

+0

Dank akrun! Können Sie mir bitte helfen, wenn ich mehrere Spalten im Datenrahmen für die Summe habe? was muss dann getan werden. Dies kann eine Spalte oder mehr sein, je nach Berichtszeit, diese Lösung funktioniert, wenn ich nur Spalten kenne. Dies zeigt Fehler: df1 = rbind (df1, c ("Grand_Total", "", colSums (df1 [, 3: ncol (df1)], na.rm = T))) dies funktioniert, wenn diese mehrere Spalten sind aber für 1 Spalte zeigt es Fehler: #Error in colSums (df1 [, 3], na.rm = T): # 'x' muss ein Array von mindestens zwei Dimensionen sein –

+0

@VishanRana Dies basiert auf dem Ablegen der Dimensionen müssen Sie 'colSums (df1 [, 3: ncol (df1), drop = TRUE], na.rm = T)))' oder entfernen Sie das Komma, dh 'colSums (df1 [3: ncol (df1)] , na.rm = T))) ' – akrun

+1

vielen Dank Herr! –

1

Sie wollen sum(df1$till_5). Es ist nur ein Wert, daher möchten Sie ihn wahrscheinlich nicht einer ganz neuen Zeile im Datenrahmen zuweisen.

Verwandte Themen