基本上,我正在連接兩個資料框架,其中一個(游戲日志)有20個欄位的 "玩家ID "資料,我正在將其與另一個資料框架(Lahman::Appearances [w/ a key for a different playerID scheme])連接,后者有 "GS "資料。所以VisitorBatting1PlayerID將有一個 "VisitorBatting1PlayerIDGS "欄位,VisitorBatting2PlayerID也是如此。
我怎樣才能讓連接/應用函式一次性穿過資料框架?這樣的計算方式是否更快捷?在 "外觀 "中查看每行的所有20個匹配的ID值,而不需要一個一個地進行蠻力計算?
次要的問題。
Retro_Temp3 在這里輸入代碼<- Retro_Temp2 %>% mutate(Home_most_GS = apply(. [33,43:52], 1, function(x) names(x) [maxn(1)(x)])
我不確定為什么這不起作用。當我運行實際的過濾器時,我只在Visitor一側得到輸出,這在概念上沒有意義,所以它顯然是錯誤的。
Retro_Output <- tibble()
Chadwick <- read_csv("https://raw.githubusercontent.com/chadwickbureau/baseballdatabank/master/core/People.csv")
`for (i in 1970:1980) { Appearance <- Lahman::Appearances %>% filter(yearID <= i) %>% group_by(playerID) %>% summarise(GS = sum(GS) ) 外觀 <- left_join(Appearance,chadwick, by = c("playerID" = "bbrefID")) %>% select(key_retro,GS) %>% rename(playerID = retroID)
Retro_Temp <- read_csv(...)
Retro_Temp <- Retro_Temp %>% select(Date。 LengthInOuts,VisitorStartingPitcherID,VisitorBatting1PlayerID。 VisitorBatting2PlayerID,VisitorBatting3PlayerID。 VisitorBatting4PlayerID,/span>VisitorBatting5PlayerID。 VisitorBatting6PlayerID,VisitorBatting7PlayerID,VisitorBatting8PlayerID。 VisitorBatting9PlayerID,HomeStartingPitcherID,HomeBatting1PlayerID。 HomeBatting2PlayerID,HomeBatting3PlayerID,HomeBatting4PlayerID。 HomeBatting5PlayerID,HomeBatting6PlayerID,HomeBatting7PlayerID。 HomeBatting8PlayerID,HomeBatting9PlayerID)
Retro_Temp2 < - left_join(Retro_Temp,/span>Appearance, 通過= c("VisitorStartingPitcherID" = operator">= "playerID") %> %重命名(VisitorStartingPitcherIDGS = GS)
print(Retro_Temp2$VisitorStartingPitcherIDGS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting1PlayerID" = operator">= "playerID") %> %重命名(VisitorBatting1PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting2PlayerID" = operator">= "playerID") %> %重命名(VisitorBatting2PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting3PlayerID" = operator">= "playerID") %> %重命名(VisitorBatting3PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting4PlayerID" = operator">= "playerID"))%> %重命名(VisitorBatting4PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting5PlayerID" = operator">= "playerID"))%>。 %重命名(VisitorBatting5PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting6PlayerID" = operator">= "playerID"))%> %重命名(VisitorBatting6PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting7PlayerID" = operator">= "playerID") %> %重命名(VisitorBatting7PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting8PlayerID" = operator">= "playerID") %> %重命名(VisitorBatting8PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("VisitorBatting9PlayerID" = operator">= "playerID"))%> %重命名(VisitorBatting9PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("HomeStartingPitcherID" = c("HomeStartingPitcherID") operator">= "playerID") %> %重命名(HomeStartingPitcherGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("HomeBatting1PlayerID" = operator">= "playerID"))%> %重命名(HomeBatting1PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 由= c("HomeBatting2PlayerID" = c()。 operator">= "playerID"))%> %重命名(HomeBatting2PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("HomeBatting3PlayerID" = c("HomeBatting3PlayerID") operator">= "playerID"))%> %重命名(HomeBatting3PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("HomeBatting4PlayerID" = c() operator">= "playerID"))%> %重命名(HomeBatting4PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("HomeBatting5PlayerID" = c("HomeBatting5PlayerID") operator">= "playerID"))%> %重命名(HomeBatting5PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 由= c("HomeBatting6PlayerID" = c()。 operator">= "playerID"))%> %重命名(HomeBatting6PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 由= c("HomeBatting7PlayerID" = c("HomeBatting7PlayerID") operator">= "playerID"))%> %重命名(HomeBatting7PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 由= c("HomeBatting8PlayerID" = c()。 operator">= "playerID"))%> %重命名(HomeBatting8PlayerIDGS = GS)
Retro_Temp2 < - left_join(Retro_Temp2,/span>Appearance。 通過= c("HomeBatting9PlayerID" = c("HomeBatting9PlayerID") operator">= "playerID") %> %重命名(HomeBatting9PlayerIDGS = GS)
maxn < - function(n) 函式(x) order(x, 遞減= TRUE)[/span>n]
#Appearances3 <- Appearances2 %>% mutate(position = apply(. [9:21], 1, function(x) names(x) [maxn(1)(x)])
#include home/away starter with opposite team。
Retro_Temp3 <- Retro_Temp2 %>% mutate(Home_most_GS = apply(. [33,43。 52], 1。 function(x) names(x) [maxn(1)(x)]))
Retro_Temp3 <- Retro_Temp3 %>% mutate(Vistor_most_GS = apply(. [/span>33: 43], 1。 function(x) names(x) [maxn(1)(x)]))
Retro_Temp4 <- Retro_Temp3 %> %過濾(Vistor_most_GS == "HomeStartingPitcherGS" | Home_most_GS == "VisitorStartingPitcherGS" )
Retro_Output <- bind_rows(Retro_Output, Retro_Temp4)
}。
uj5u.com熱心網友回復:
我沒有你正在使用的Retro_Temp資料,所以我將從我的終端生成一個樣本資料集。
一般來說,當你發現自己在一個資料框架中的同一列與另一個資料框架中的不同列進行連接時,一種方法是以長格式獲取資料,然后執行連接。
#Data
set.seed(123)
x <- data. frame(id = 1。 5。 newvalue = letters[/span>1: 5])
y <- data. frame(id1 = sample(5)。 id2 = sample(5))
library(dplyr)
library(tidyr)
#Currently you are doing
x %>%。
left_join(y, 通過= c('id' = = 'id1') %> %
left_join(y, by = c('id' = 'id2'))
#What instead you can do is
y %>%
pivot_longer(cols = starts_with('id')) %> %
left_join(x, by = c('value' = 'id'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/320181.html
標籤:
