Ich versuche eine Übersichtstabelle zu erstellen, die mir eine Fahrradnutzung in einem Borough angibt. Die Formel dafür istR Dataframe: Fehlerargument impliziert unterschiedliche Anzahl von Zeilen
(Anzahl der mal ein Fahrrad gemietet ist, insbesondere Borough)/(Gesamtanzahl der Mieten in diesem Bezirk).
Endgültige Ausgabe sollte in etwa so aussehen.
BikeId Borough Pct
1 K&C 0.02
1 Hammersmith 0.45
7 K&C 0.32
Um das zu erreichen, dass ich wie unten eine Funktion zu implementieren versuchen:
smplData <- function(df) {
#initialize an empty dataframe
summDf <- data.frame(BikeId = character(), Borough = character(), Pct =
double())
#create a vector of unique borough names
boro <- unique(df[,"Start.Borough"])
for (i in 1:length(boro)){
#looping through each borough and create a freq table
bkCntBor<- table(df[df$Start.Borough==boro[i],"Bike.Id"])
#total number of rentals in a particular borough
borCnt <- nrow(df[df$Start.Borough==boro[i],])
for (j in 1:length(bkCntBor)){
#looping thru each bike for the ith borough and calculate ratio of jth bike
bkPct <- as.vector(bkCntBor[j])/borCnt
#temp dataframe to store a single row corresponding to bike, boro and ratio
dfTmp <- data.frame(BikeId = names(bkCntBor[j]), Borough = boro[i],
Pct = bkPct)
#append to summary table
summDf <<- rbind(summDf, dfTmp)
}
}
}
Der Leiter des df-Datensatz ist als unten
>head(df)
Bike.Id Start.Borough Rental.Id
1 K&C 61349872
1 K&C 61361611
1 Royal Parks 61362295
1 K&C 61364627
1 K&C 61367817
1 H&F 61368333
Wenn ich die Funktion laufe nach dem Einfügen ein Datensatz in SummDf Ich bekomme den folgenden Fehler
Fehler bei data.frame (BikeId = Namen (bkCntBor [j]), Borough = boro [i], Pct = bkPct): Argumente unterschiedliche Anzahl der Zeilen implizieren: 0, 1
Ich kann den Lauf der Funktionscode in der Konsole, indem jeweils ein Wert für i und j übergeben wird. Aber wenn ich es als eine Funktion starte, erhalte ich den oben erwähnten Fehler. Jede Hilfe, die Sie bereitstellen können, wird erstaunlich sein.
Hier sind einige Beispieldaten für das gleiche.
Bike.Id Start.Borough
1 K&C
1 K&C
1 K&C
7 K&C
7 K&C
1 Hammersmith
1 Hammersmith
7 Hammersmith
9 Hammersmith
9 Westminster
Sie sollten Beispieldaten in einem [reproduzierbaren Format] teilen (http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-reproduzierbar-Beispiel). Sie scheinen auch eine Klammer in Ihrem Funktionscode zu fehlen, so dass es nicht syntaktisch gültig ist. Und schließlich ist das Hinzufügen einer Zeile auf einmal zu einem data.frame eine schrecklich ineffiziente Prozedur. Es wäre besser, mit einer klaren Beschreibung dessen zu beginnen, was Sie zu tun versuchen, anstatt zu verlangen, dass wir die Absichten dieses nicht funktionierenden Codes interpretieren. – MrFlick
@MrFlick entschuldigen Sie sich dafür. Ich habe die Frage mit relevanter Absicht aktualisiert, Beispieldaten eingegeben und den Code mit der fehlenden Klammer korrigiert. – rkadam