Sha*_*rar 3 r plyr dataframe dplyr tidyr
我有一个如下形式的数据集:-
a <- data.frame(X1=c("A", "B", "C", "A", "B", "C"),
X2=c("B", "C", "C", "A", "A", "B"),
X3=c("B", "E", "A", "A", "A", "B"),
X4=c("E", "C", "A", "A", "A", "C"),
X5=c("A", "C", "C", "A", "B", "B")
)
Run Code Online (Sandbox Code Playgroud)
我还有另一组以下表格:-
b <- data.frame(col_1=c("ASD", "ASD", "BSD", "BSD"),
col_2=c(1, 1, 1, 1),
col_3=c(12, 12, 31, 21),
col_4=("A", "B", "B", "A")
)
Run Code Online (Sandbox Code Playgroud)
我想要做的是col_4
从 set 中取出列b
并在 set 中逐行匹配a
,以便它告诉我哪一行在col_4
新列中有多少个元素。新列的名称无关紧要。
例如:- set 中的第一行和第五行a
包含col_4
来自 set 的所有元素b
。
此外,不应发现重复项。例如。集合中的第六行a
有 3"B"
秒。但是由于col_4
from setb
只有两个"B"
s,它应该告诉我 2 而不是 3。
预期输出的形式为:-
c <- data.frame(X1=c("A", "B", "C", "A", "B", "C"),
X2=c("B", "C", "C", "A", "A", "B"),
X3=c("B", "E", "A", "A", "A", "B"),
X4=c("E", "C", "A", "A", "A", "C"),
X5=c("A", "C", "C", "A", "B", "B"),
found=c(4, 1, 2, 2, 4, 2)
)
Run Code Online (Sandbox Code Playgroud)
我们可以使用vecsets::vintersect
which 来处理重复项。
采用apply
逐行我们可以指望许多共同的价值观是如何在它们之间b$col4
并且在每行a
。
apply(a, 1, function(x) length(vecsets::vintersect(b$col_4, x)))
#[1] 4 1 2 2 4 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64 次 |
最近记录: |