0
私はまだRが新しく、* ply関数を使用してデータフレームから情報を抽出したいと考えています。サンプル入力データフレームは、次のようになります。多変数関数でdaplyを使用する
# 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
私が何をしたいのか「MyTeam」の対戦相手だけでなく、勝者の両方を抽出しています。スコアは、ホームチームの得点対離れたチームの得点として常に与えられます。
# Get the opponent to MyTeam; can add this to dataframe later
opponent <- ifelse(stats$hometeam == "MyTeam", stats$awayteam, stats$hometeam)
しかし、私はすべての試合の勝者を取得しようとして立ち往生しています:私は相手がこのようなものです誰抽出する方法を持っています。私はdaply()とそのような名前付き関数でこれをやろうとしました:
# 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))
しかし、これは明らかに動作しません。私はdaply()メソッドを間違って適用していますか?私は*プライ関数が実際にどのようにふるまうかはまだ分かりません。 *プライ関数がここに行く方法だと思われますが、そこに他のソリューションがある場合、私はすべての耳です。どんな助けでも大歓迎です!
のAck。私はこれを考えていたはずです!乾杯。 –