Я занимаюсь исследованиями, в которых я провожу анализ в нескольких отдельных df
. Результаты отдельного df
должны использоваться в одном основном расчете df
. Большинство категорий характеристик используются в нескольких df
. Я ищу использовать результаты из отдельной df
# Table used for league average calculations below
teams <- tibble::tribble(
~Team, ~PA, ~AB, ~H, ~HBP, ~BB, ~HR, ~R, ~RBI, ~SB, ~AVG, ~OBP,
"Athletics", 6255, 5579, 1407, 76, 550, 227, 813, 778, 35, 0.252, 0.325,
"Red Sox", 6302, 5623, 1509, 55, 569, 208, 876, 829, 125, 0.268, 0.339,
"Yankees", 6271, 5515, 1374, 62, 625, 267, 851, 821, 63, 0.249, 0.329,
"Indians", 6300, 5595, 1447, 80, 554, 216, 818, 786, 135, 0.259, 0.332,
"Astros", 6146, 5453, 1390, 61, 565, 205, 797, 763, 71, 0.255, 0.329
)
# Table used for player calculations (main table)
players <- tibble::tribble(
~Name, ~Team, ~G, ~PA, ~AB, ~H, ~HBP, ~BB, ~HR, ~R, ~RBI, ~SB, ~AVG, ~OBP,
"Mookie Betts", "Red Sox", 136, 614, 520, 180, 8, 81, 32, 129, 80, 30, 0.346, 0.438,
"Mike Trout", "Angels", 140, 608, 471, 147, 10, 122, 39, 101, 79, 24, 0.312, 0.46,
"J.D. Martinez", "Red Sox", 150, 649, 569, 188, 4, 69, 43, 111, 130, 6, 0.33, 0.402,
"Alex Bregman", "Astros", 157, 705, 594, 170, 12, 96, 31, 105, 103, 10, 0.286, 0.394,
"Jose Ramirez", "Indians", 157, 698, 578, 156, 8, 106, 39, 110, 105, 34, 0.27, 0.387
)
# Denominators needed for calculations
calc_tbl <- tibble::tribble(
~data_col, ~calc_denom,
"HR", 14.3,
"R", 19.6,
"RBI", 17.5,
"SB", 26.2,
"AVG", 0.0045,
"OBP", 0.0031
) %>%
spread(key = data_col, value = "calc_denom")
# Get league average of teams
lg_avg <- teams %>%
# Divide counting stats by 10 to get the averages for 10 batters
mutate_at(vars(PA:SB), funs(./10)) %>%
summarize_if(is.numeric, mean, na.rm=TRUE)
lg_avg
#> # A tibble: 1 x 11
#> PA AB H HBP BB HR R RBI SB AVG OBP
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 625. 555. 143. 6.68 57.3 22.5 83.1 79.5 8.58 0.257 0.331
# Calculate Values
value_tbl <- players %>%
mutate(calc_R = R / calc_tbl$R,
calc_HR = HR / calc_tbl$HR,
calc_RBI = RBI / calc_tbl$RBI,
calc_SB = SB / calc_tbl$SB,
calc_BA = (((lg_avg$H * 13 ) + H)/(AB + (lg_avg$AB * 13)) - lg_avg$AVG) / calc_tbl$AVG,
calc_Total = (calc_R + calc_HR + calc_RBI + calc_SB + calc_BA))
У меня действительно есть 2 вопроса, и оба они сосредоточены на эффективности, и есть ли лучший способ сделать то, что я делаю. Правильно ли я называю результаты вычислений других столбцов df
?
Есть ли более прямой и эффективный способ написания последнего фрагмента кода для мутантов?