我正在嘗試根據特定列過濾 df,但條件并不總是相同。
我正在查看一個大型 NBA 資料集,并且一些球員曾效力于多支球隊,因此他們對他們效力的每支球隊都有一個觀察結果以及總(TOT)行。我想拉TOT obs。對于擁有它的玩家。如果球員只為一支球隊效力,那么他們在球佇列中沒有 TOT,所以我想保持這一觀察。
示例資料可能會使這更容易理解。我知道如何根據列進行過濾,但不確定如何針對該列中可能沒有 TOT 的那些進行調整。
library ("dplyr")
# declaring a dataframe
data_frame = data.frame(Player = c("Luka","Steph","Anderson","Anderson","Anderson") ,
Games= c(60, 59, 42, 30, 12),
Team= c('Dallas', 'Warriors', 'TOT', 'CLE', 'IND'))
print ("Original dataframe")
print (data_frame)
# checking which values of col1
# are equivalent to b or e
data_frame_mod <- filter(data_frame, Team == 'TOT')
print ("Modified dataframe")
print (data_frame_mod)
此代碼產生:

但是,我也想包括 Luka 和 Steph 行,因為他們只為一支球隊效力。以下是預期的輸出:

uj5u.com熱心網友回復:
您可以使用slice_max,因為 TOT 列是所有游戲的總和:
library(dplyr)
data_frame %>%
group_by(Player) %>%
slice_max(Games)
輸出
Player Games Team
<chr> <dbl> <chr>
1 Anderson 42 TOT
2 Luka 60 Dallas
3 Steph 59 Warriors
uj5u.com熱心網友回復:
我們可以按“播放器”進行分組,并使用條件檢查行數 ( n() ==1)
library(dplyr)
data_frame %>%
group_by(Player) %>%
filter(n() ==1| Team == 'TOT') %>%
ungroup
-輸出
# A tibble: 3 × 3
Player Games Team
<chr> <dbl> <chr>
1 Luka 60 Dallas
2 Steph 59 Warriors
3 Anderson 42 TOT
uj5u.com熱心網友回復:
使用group_by arrangeand略有變化slice:
library(dplyr)
data_frame %>%
group_by(Player) %>%
arrange(Player, .by_group = TRUE) %>%
slice(1)
Player Games Team
<chr> <dbl> <chr>
1 Anderson 42 TOT
2 Luka 60 Dallas
3 Steph 59 Warriors
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505742.html
上一篇:使用熊貓按分鐘過濾
下一篇:根據條件將資料幀轉換為多個資料幀
