R 将一列的值与多个其他列的值进行比较

R 将一列的值与多个其他列的值进行比较,r,R,我有一列(VariableA)的唯一ID,我想与多列(VariableB、VariableC…)进行比较 每列都有唯一的ID,但一个ID可能位于两列或更多列中,如下所示: VariableA VariableB VariableC 0001 0001 0008 0002 0003 0001 0004 0004 0002 0005 0006 0007 NA 我使用的是ai

我有一列(VariableA)的唯一ID,我想与多列(VariableB、VariableC…)进行比较

每列都有唯一的ID,但一个ID可能位于两列或更多列中,如下所示:

VariableA VariableB VariableC
0001           0001         0008
0002           0003         0001
0004           0004         0002
0005           0006
0007 NA


我使用的是
ainb,下面是一个简单的例子。首先,让我们创建一个示例数据框:

data_example <- data.frame(var_a = 1:10, var_b = c(1:5,11:15), var_c=c(1:7, NA, NA, NA))
> data_example
   var_a var_b var_c
1      1     1     1
2      2     2     2
3      3     3     3
4      4     4     4
5      5     5     5
6      6    11     6
7      7    12     7
8      8    13    NA
9      9    14    NA
10    10    15    NA
现在我们想知道在这些重叠向量中出现了多少个
var_a
元素。首先创建一个小辅助函数,用于获取列表中一个向量的比例重叠:

propn_overlap <- function(comparison_vector, id_vector){ 
                     sum(id_vector %in% comparison_vector) / length(id_vector)
                 }
> sapply(overlap_vals, propn_overlap, data_example$var_a)
var_a var_b var_c 
  1.0   0.5   0.7 

尝试获取其他列的表计数并按第一列进行子集设置,如
表(unlist(df[-1]))[df$VariableA]
。数据帧的名称是什么?因为这个表达式不应该工作
variablea[,1]
。首先,它不是列的名称;其次,列本身没有两个维度。variablea是只有一列(变量a的所有ID)的data.frame的名称。dat是一个data.frame,其中包含我的所有列。你是我的英雄!非常感谢您的详细解释,我肯定会将这些函数保留在内存中。非常感谢你!
> sapply(overlap_vals, propn_overlap, data_example$var_a)
var_a var_b var_c 
  1.0   0.5   0.7