R 将一列的值与多个其他列的值进行比较
我有一列(VariableA)的唯一ID,我想与多列(VariableB、VariableC…)进行比较 每列都有唯一的ID,但一个ID可能位于两列或更多列中,如下所示: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 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