从另一个列表中的一个列表中查找元素计数

问题描述 投票:0回答:2

因此,如果我有两个列表,一个是没有重复的“主列表”,另一个是可能重复的子集,我希望能够检查次要子集列表中每个元素的数量。

所以,如果我有这些列表:

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()来思考它

r
2个回答
2
投票

您可以使用tablematch - 但首先制作向量因子,以便输出中包含不存在的级别:

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
投票

如果由于某种原因你想要一个整体解决方案。此方法保留列表中的原始数据类型。

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
© www.soinside.com 2019 - 2024. All rights reserved.