Ich bin noch neu in R und möchte eine * ply-Funktion verwenden, um Informationen aus einem Datenrahmen zu extrahieren. Eine Probe Eingangsdatenrahmen sieht wie folgt aus:Verwenden Sie daply mit Multi-Variable-Funktion
# Construct the dataframe
season <- c("12","12","12","12","12")
hometeam <- c("Team A","MyTeam","MyTeam","Team D","Team E")
awayteam <- c("MyTeam","Team B","Team C","MyTeam","MyTeam")
score <- c("1 - 1","7 - 1","0 - 0","0 - 2","0 - 1")
stats <- data.frame(season,hometeam,awayteam,score)
print(stats)
season hometeam awayteam score
1 11/12 Team A MyTeam 1 - 1
2 11/12 MyTeam Team B 7 - 1
3 11/12 MyTeam Team C 0 - 0
4 11/12 Team D MyTeam 0 - 2
5 11/12 Team E MyTeam 0 - 1
Was ich tun möchte, ist extrahieren sowohl die Gegner von ‚MyTeam‘ sowie den Sieger. Der Punktestand wird immer als der Punktestand der Heimmannschaft gegen den Punktestand der Auswärtsmannschaft angegeben. Ich habe einen Weg zu extrahieren, wer der Gegner so ist:
Aber ich bin stecken stecken versucht, den Gewinner jedes Spiels zu bekommen. Ich habe versucht, dies zu tun mit daply() und einer benannte Funktion wie so:
# Separate out scores for home and away team to determine winner
stats <- separate(stats, score, c('homescore','awayscore'), sep=' - ', remove=TRUE)
# Function for use in ply to get the winner of a match
determineWinner <- function(homescore, awayscore, hometeam) {
homewon <- FALSE
if (homescore < awayscore) {
homewon <- FALSE
} else if (homescore > awayscore) {
homewon <- TRUE
} else {
return("tie")
}
if (hometeam == "MyTeam") {
ifelse(homewon, return("won"), return("lost"))
} else {
ifelse(homewon, return("lost"), return("won"))
}
}#end of function
winner <- daply(stats, .(homescore,awayscore,hometeam), determineWinner(stats$homescore, stats$awayscore, stats$hometeam))
Aber dies ist eindeutig nicht. Teste ich die Methode daply() falsch? Ich bin mir immer noch nicht sicher, wie sich die * Funktionen wirklich verhalten. Es scheint, als ob eine * ply-Funktion der Weg dorthin ist, aber wenn es andere Lösungen gibt, bin ich ganz Ohr. Jede Hilfe wird sehr geschätzt!
Ack. Ich hätte darüber nachdenken sollen! Prost Freund. –