【发布时间】:2018-08-21 14:05:43
【问题描述】:
我有一个小标题,每一行对应一个带有 ID 的样本,每个样本将有多个带有值的类别。我想列出两个或多个类别的值彼此匹配的 ID 对。
# A tibble: 3 x 2
ID data
<chr> <list>
1 ID1 <tibble [1 x 3]>
2 ID2 <tibble [1 x 3]>
3 ID3 <tibble [1 x 3]>
我可以使用sum(match(x$data[[i]], x$data[[j]], nomatch=0)>0) 来获取两行之间的匹配计数。
我可以通过将match() 放入i 和j 循环中来得到答案。有没有更好的,即整洁的方式(使用tidyverse)来得到答案?
谢谢。
例如,这里是原始的data.frame:
ID category value
1 ID1 length 100
2 ID1 type L
3 ID1 color Blue
4 ID2 length 100
5 ID2 type M
6 ID2 color Blue
7 ID3 length 150
8 ID3 type M
9 ID3 color Blue
输出将如下所示:
ID.a ID.b matches
1 ID1 ID2 2
2 ID1 ID3 1
3 ID2 ID3 2
如开头所示,我使用tidyverse 将输入的data.frame 转换为tibble,然后在循环中使用match。
# A tibble: 3 x 2
ID data
<chr> <list>
1 ID1 <tibble [1 x 3]>
2 ID2 <tibble [1 x 3]>
3 ID3 <tibble [1 x 3]>
【问题讨论】: