Найти количество элементов из одного списка в другом списке - PullRequest
0 голосов
/ 07 марта 2019

Итак, если у меня есть два списка, один из которых является «основным списком» без повторов, а другой является подмножеством с возможными повторениями, я хотел бы иметь возможность проверить, сколько каждого элемента находится в дополнительном списке подмножеств..

Итак, если у меня есть эти списки:

a <- (a, b, c, d, e, f, g)
b <- (a, d, c, d, a, f, f, g, c, c)

Я бы хотел определить, сколько раз каждый элемент из списка a появляется в списке b и частоту каждого,Мой идеальный вывод - это r таблица, которая выглядит так:

c <- a b c d e f g 
     2 0 3 1 0 2 1

Я пытался продумать это с %in% и table()

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Вы можете использовать table и match - но сначала сделайте векторы-факторы, чтобы уровни, отсутствующие, были включены в вывод:

a <- factor(c("a", "b", "c", "d", "e", "f", "g"))
b <- factor(c("a", "d", "c", "d", "a", "f", "f", "g", "c", "c"))

table(a[match(b, a)])

a b c d e f g 
2 0 3 2 0 2 1 
1 голос
/ 07 марта 2019

Если по какой-то причине вам нужно решение по тидиверу. Этот метод сохраняет исходный тип данных в списках.

library(tidyverse)

a <- c("a", "b", "c", "d", "e", "f", "g")
b <- c("a", "d", "c", "d", "a", "f", "f", "g", "c", "c")

tibble(letters = a, count = unlist(map(a, function(x) sum(b %in% x))))

# A tibble: 7 x 2
 letters count
<chr>   <int>
1 a           2
2 b           0
3 c           3
4 d           2
5 e           0
6 f           2
7 g           1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...