Ich arbeite mit MLB Statcast Daten in RStudio und versuche zu berechnen schwingenden Streik Prozentsatz (Anzahl der schwingenden Streiks geteilt durch die Gesamtneigung von geworfen Krug) für jeden einzelnen Krug. Für die Beispiele willen hier ist ein Beispieldatenrahmen:Teilen von spezifischen Faktoren innerhalb des Datenrahmens nach Anzahl der Zeiten, in denen sie in Dataframe (R) erscheinen
pitcher_name <- c('AJ Griffin','AJ Griffin','AJ Griffin','AJ Griffin','AJ Griffin',
'AJ Griffin','Adam Conley','Adam Conley','Adam Conley','Adam Conley',
'Adam Conley','Adam Conley')
description <- c('foul','swinging_strike','swinging_strike','swinging_strike_blocked',
'ball','hit_into_play','swinging_strike','swinging_strike',
'swinging_strike','swinging_strike_blocked','swinging_strike_blocked','ball')
pitch_analysis.data <- data.frame(pitcher_name, description)
Das Endziel ist es, jeden Pitcher Schwingen Streiks zu zählen (beide Schwingen des Streichens und geschwungen Streik blockiert) und dann teilen diese Zahl durch die Summe der von den einzelnen Werfer geworfen Teilungen . Für dieses Beispiel sollte die endgültige Antwort 50% (3 schwingende Schläge über 6 Tonhöhen) für AJ Griffin und 83% für Adam Conley (5 schwingende Schläge über 6 Tonhöhen) betragen. Ich habe den folgenden Befehl mit dem dplyr Paket versucht:
P <- pitch_analysis.data %>% group_by(pitcher_name, description) %>% count(description)
Das ist mir eine Zählung jeder Beschreibung gibt, aber ich bin nicht sicher, wie dplyr zu verwenden, um den letzten Schritt bekommen der Gruppierung der zwei Arten von Schwingen schlägt zusammen und teilt sich dann durch die Gesamtzahl der Tonhöhen für jeden Krug. Jede Eingabe wäre dankbar, danke!
Basis-R-Option wäre die Verwendung von "aggregate", "aggregate" (Beschreibung ~ pitcher_name, pitch_analysis.data, Funktion (x) sum (grepl ("swinging_strike", x))/Länge (x)) '. –