我有一個包含這些列的現有資料框。主隊按上述順序對陣客隊。在結果欄中,H 表示主隊獲勝,P 表示客隊獲勝,D 表示平局。
主隊 = 利物浦、布萊頓、伯明翰、曼徹斯特、樸茨茅斯
客隊 = 荷蘭、奧地利、柬埔寨、荷蘭、奧地利
結果 = H,H,P,D,H
我的新資料框由“TeamName”列組成,其中顯示了參加該系列賽的球隊總數。
TeamName = 利物浦、布萊頓、伯明翰、曼徹斯特、荷蘭、奧地利、柬埔寨、樸茨茅斯
我想在名為“記錄”的新資料框中添加一列,記錄每支球隊的勝利、失敗和平局。
我是 R 新手,所以任何幫助都會很棒!謝謝!
uj5u.com熱心網友回復:
library(data.table)
df1 <- data.frame(HomeTeam = c('Liverpool', 'Brighton', 'Birmingham', 'Manchester', 'Portsmouth'),
AwayTeam = c('Netherlands', 'Austria', 'Cambodia', 'Netherlands', 'Austria'),
Results = c('H','H','P','D','H'))
teams <- c(df1$HomeTeam, df1$AwayTeam) |> unique() |> sort()
df2 <- lapply(teams, function(x) {
wins <- 0
losses <- 0
draws <- 0
idx <- which(df1$HomeTeam == x)
wins <- sum(df1[ idx, 'Results' ] == 'H')
losses <- sum(df1[ idx, 'Results' ] == 'P')
draws <- sum(df1[ idx, 'Results' ] == 'D')
idx <- which(df1$AwayTeam == x)
wins <- wins sum(df1[ idx, 'Results' ] == 'P')
losses <- losses sum(df1[ idx, 'Results' ] == 'H')
draws <- draws sum(df1[ idx, 'Results' ] == 'D')
data.frame(TeamName = x, Wins = wins, Losses = losses, Draws = draws)
}) |>
rbindlist() |>
as.data.frame()
df2 |> print()
輸出:
TeamName Wins Losses Draws
1 Austria 0 2 0
2 Birmingham 0 1 0
3 Brighton 1 0 0
4 Cambodia 1 0 0
5 Liverpool 1 0 0
6 Manchester 0 0 1
7 Netherlands 0 1 1
8 Portsmouth 1 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519814.html
標籤:r循环合并多列变异
上一篇:R:在R中保存JPEGS
