Ich bin ein R Newbie. Entschuldige, dass ich eine grundlegende Frage gestellt habe. Ich habe "Daten", die aus drei Spalten besteht (als Beispiel) namens Data Engine, Daten $ Einheit und Daten $ AvailableLeft. data $ AvailableLeft ist ein Dummy (0 oder 1). Und für jeden eindeutigen Wert der Daten $ engine kann es mehrere Werte der Daten $ unit geben. Ich würde gerne Prozent von "1s" in den Daten $ AvailableLeft für jeden Wert der Daten $ engine bzw. data $ unit berechnen. Ich habe hunderttausende von Zeilen, aber nur die ersten 13 Zeilen eingefügt.Berechne Prozentsätze von "1s" in einer Spalte basierend auf zwei anderen Spalten in R
data$engine data$unit data$AvailableLeft
10158 207 1
10158 207 0
10158 207 1
10158 207 0
10147 142 1
10147 142 1
10147 142 1
10147 142 0
10147 142 1
10147 142 0
10147 142 1
10161 244 0
10161 244 0
Ich möchte meine Ausgabe in diesem Format haben:
data$engine data$unit Percentage
10158 207 20%
10147 142 10%
10161 244 3%
. . .
. . .
. . .
ich diese Codes versucht, aber war nicht erfolgreich:
##calculate the percentage of "1s" for whole data and not for each data$engine and data$unit
sum(data$AvailableLeft==1)/length(data$AvailableLeft)
# tried to do it in parts but was not able to divide the two columns at last...
df11 <- data.frame(data$engine, data$unit, data$AvailbleLeft)
leftwarn1=aggregate(data$AvailableLeft ~ data$engine + data$unit, data = df11, sum) #Counting number of "1s" per unit per engine
leftwarn10 = count(data$AvailableLeft == 0, c("data$engine","data$unit")) #counting number of "1 and 0" per unit per engine
Dank für die Antwort verlassen. Ich versuchte, R kehrt mit allen Feldern zurück, die mit Werten gefüllt werden, und Aufforderungen [erreichte getOption ('max.print ") - 255502 Reihen weggelassen] –
Bitte überprüfen Sie die Änderung - scheint, mit den Beispieldaten (?) Zu arbeiten weil ich vergessen habe "left" durch "AvailableLeft" zu ersetzen ... – lukeA
Ich bearbeite dein Skript entsprechend, aber immer noch Fehler. Danke für deine Zeit. df11 <- data.frame (DASlane $ Device, DASlane $ Trip, DASlane $ AvailableLeft) Subset (as.data.frame (mit (df11, prop.Tabelle (Tabelle (DASlane $ Device, DASlane $ Trip, DASlane $ AvailableLeft)) * 100)), DASlane $ AvailableLeft == 1, wählen Sie = -DASlane $ AvailableLeft) –