Как извлечь строку, которая встречается X раз в списке данных - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть список, похожий по структуре на пример с игрушкой ниже.

DPY (головка (LST)):

list(GAME1 = structure(list(Class = structure(c(2L, 1L, 5L, 4L, 
3L), .Label = c("fighter", "paladin", "rouge", "sorcerer", "wizard"
), class = "factor"), Score = c(6, 7, 6, 7, 7)), class = "data.frame",     row.names = c(NA, 
-5L)), GAME2 = structure(list(Class = structure(c(2L, 4L, 1L, 
 3L), .Label = c("cleric", "fighter", "monk", "wizard"), class =  "factor"), 
Score = c(5, 5, 5, 5)), class = "data.frame", row.names = c(NA, 
 -4L)))

Как мне извлечь строки, найденные в количестве X фреймов данных в списке списков. Например. Если бы я хотел знать, сколько строк появилось дважды в моем списке в первом столбце каждого фрейма данных. Мои результаты будут «боец».

Не только это, но я хотел бы получить сумму от общего количества очков, которое имели бойцы во всех играх, в которых они были.

поэтому мои результаты по этому методу будут:

  Class     |  Score
 fighter    |  11 

И желательно в новом фрейме данных.

Примечание. мои фактические данные очень большие и состоят из 10 списков. Мне нужен метод, который позволяет мне изменить количество списков, используемых в анализе, то есть найти все общие строки из столбца X в 7 списках или найти все общие строки из столбца X в 4 списках.

Большое спасибо, любая помощь приветствуется.

1 Ответ

2 голосов
/ 09 апреля 2019
library(dplyr)
bind_rows(lst, .id = "game") %>% 
    group_by(Class) %>% 
    summarize(occurance = n(),
           total_score = sum(Score)) %>% 
    filter(occurance > 1)

Результат:

# A tibble: 2 x 3
  Class   occurance total_score
  <chr>       <int>       <dbl>
1 fighter         2          12
2 wizard          2          11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...