2017-01-31 1 views
-2

Der angegebene Datensatz enthält Überweisungen zwischen Bankkonten. Jede Zeile enthält den Bank_Account und den Transfer_Amount. Der Zweck besteht darin, pro Bankverbindung die gesamte transfer_amount zu berechnen und diese in einen neuen Datenrahmen zu bringen. Dieser neue Datenrahmen sollte nur aus einmaligen bank_accounts bestehen (nicht die gleiche wie in der alten, in der jedes Bankkonto mehrmals vorkommen kann) und der Summe ihres übertragenen Betrags.Wie erstellt man einen neuen Datenrahmen mit zusammengefassten Daten in R?

Beispiel: die niedrigste Tabelle ist, was das Ergebnis wie

Angenommen aussehen sollte

Example: the lowest table is what the result should look like

+3

Willkommen bei StackOverflow. Bitte werfen Sie einen Blick auf diese Tipps, wie Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) erstellen können, sowie auf diesen Post zu [ein großartiges Beispiel in R erstellen] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Vielleicht sind die folgenden Tipps zu [eine gute Frage stellen] (http://stackoverflow.com/help/how-to-ask) ebenfalls eine Lektüre wert. – lmo

Antwort

0

dass der Datensatz data genannt wird, die Spalte, die die Kontonamen enthalten, wird account genannt, und die die Spalte enthält den Transfer genannt wird transfer:

u <- unique(data$account) # get all unique bank account numbers 
data.new <- data.frame(matrix(NA, nrow=length(u), ncol=2)) #create a new dataset to collect the results 
for (i in 1:length(u)) { #open a loop, for every unique back account 
    data.new[i, 1] <- u[i] #record the bank account number in the first column of the new dataframe 
    data.new[i, 2] <- sum(data[data$account == u[i], "transfer"]) #sum all transfers related to this account and assign to the new dataframe 
} #close the loop 
0

du mit aggregate tun können. Nehmen wir df als Ihre Eingabedaten, die im Bild gezeigt werden.

df <-data.frame(account_number = c(1,2,3,2,3), amount = c(50,23,12,34,56)) 

aggregate(amount ~ account_number, df, sum) 

    account_number amount 
1    1  50 
2    2  57 
3    3  68 
Verwandte Themen