Я пытаюсь использовать DPLYR для получения и обобщения данных. Я написал ниже, и это работает, но я хотел бы объединить все это в одно утверждение. Это возможно?
создавать наборы данных
set.seed(1)
dbo_games <- data.frame(
name = sample(c("Team1","Team2","Team3","Team4","Team5","Team6","Team7","Team8","Team9","Team10")),
total_games = sample(1:10)
)
set.seed(1)
dbo_wins <- data.frame(
name = sample(c("Team1","Team2","Team3","Team4","Team5","Team6","Team7","Team8","Team9","Team10")),
tota_wins = sample(c("yes", "no"), 10, replace = TRUE)
)
total_games <- con %>% tbl("dbo_games")
total_wins <- con %>% tbl("dbo_wins")
total<- total_games %>% filter(games > 12) %>%
group_by(NAME) %>%
summarise(total_games = n_distinct(game_id)) %>% collect()
wins <- total_wins %>% filter( win == 'Y') %>%
group_by(NAME) %>%
summarise(total_wins = n_distinct(game_id)) %>% collect()
perc_win <- total %>% left_join(wins) %>%
mutate(pct_won = total_wins/total_games)
Этот код работает, но я полагаю, что существует более краткий способ написания кода для достижения тех же результатов. Есть предположения?
Вам будет легче помочь, если вы включите простой воспроизводимый пример с образцом ввода и желаемым выводом, который можно использовать для тестирования и проверки возможных решений. Если у нас нет выборочных данных, это невозможно воспроизвести.
Было бы проще решить эту проблему, если бы вы поделились образцами данных и объяснили, почему вы делаете то, что делаете.
Однако вы все равно можете связать их вместе, как показано ниже:
total_games %>%
filter(games > 12) %>%
group_by(NAME) %>%
summarise(total_games = n_distinct(game_id)) %>%
left_join(total_wins %>% filter( win == 'Y') %>%
group_by(NAME) %>%
summarise(total_wins = n_distinct(game_id))) %>%
mutate(pct_won = total_wins/total_games)
Я думаю, что могу, но мне нужны некоторые данные.