Суммирование совпадающих значений в двух разных фреймах данных - PullRequest
0 голосов
/ 04 июля 2019

Чрезвычайно новый для R и кодирования в целом.Моя интуиция заключается в том, что это должен быть очень простой ответ, поэтому не стесняйтесь отправлять меня обратно в базовый вводный класс, если это слишком просто, чтобы тратить ваше время.

Чтобы упростить ситуацию, я уменьшу свою проблему догораздо более простая ситуация с теми же характерными чертами.

У меня есть два кадра данных.Первая показывает, сколько игр некоторые люди сыграли как «белые».Вторая показывает, сколько игр некоторые люди платили как «черные».Некоторые игроки играли как в белом, так и в черном, другие играли только в одной из этих ролей.

Я хотел бы объединить эти два кадра данных в один, показывая всех игроков, которые играли в обеих ролях, и сколько всего игр онисыграно, как белым, так и черным.

Воспроизводимый пример:

player_as_white <- c('John', 'Max', 'Grace', 'Zoe', 'Peter')
games_white <- c(sample(1:20,5))
dat1 <- data.frame(player_as_white, games_white)
player_as_black <- c('John', 'Eddie', 'Zoe')
games_black <- c(sample(1:20, 3))
dat2 <- data.frame(player_as_black, games_black)

Как получить сводный набор данных, показывающий, сколько всего игр сыграли все 6 игроков, как белых, так и черных?

Спасибо!

1 Ответ

0 голосов
/ 04 июля 2019

Для воспроизводимости хорошей практикой является указание случайного начального числа, чтобы пример работал одинаково при каждом запуске и для других.Я бы также предложил использовать stringsAsFactors = FALSE, чтобы имена обрабатывались как символы, а не как факторы, что сделает это немного проще.(править: Но здесь все должно работать и с настройками по умолчанию)* решение, которое сохраняет порядок от dat1

library(dplyr)
full_join(dat1, dat2, by = c("player_as_white" = "player_as_black"))

#  player_as_white games_white games_black
#1            John          18           5
#2             Max           6          NA
#3           Grace           7          NA
#4             Zoe          10          19
#5           Peter          15          NA
#6           Eddie          NA          18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...