如何提取在数据帧列表中出现X次的字符串

时间:2019-04-09 08:33:35

标签: r list dataframe

我具有与以下玩具示例类似的列表。

dpy(head(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个列表。我需要一种允许我更改分析中使用的列表数量的方法,即从7个列表中的X列中查找所有常见字符串,或从4个列表中的X列中查找所有常见字符串。

非常感谢,感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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