gpt4 book ai didi

r - 查找所有变量对之间的相交长度

转载 作者:行者123 更新时间:2023-12-04 08:37:24 26 4
gpt4 key购买 nike

我有一个大型数据集(大约 130 列),如下所示:

data <- data.frame(AA = c("Apple", "Banana", "0", "Cherry", "0"),
AB = c("0", "0", "Apple", "Cherry", "0"),
AC = c("0", "0", "0", "0", "Cherry"),
AD = c("Cherry", "0", "0", "Banana", "0"))
谁能帮我找到所有可能的列对之间完全匹配的数量?输出应如下所示:
> output
AA_AB AA_AC AA_AD AB_AC AB_AD AC_AD
3 2 3 2 2 2
我试过使用 length(intersect(data$AA, data$AB))但我不知道如何在一个命令中将其应用于整个数据集。
通过在 Stackoverflow 上搜索其他查询,我还尝试首先创建一个包含所有可能列对的数据框,但我无法弄清楚如何实际使我的输出与我的原始列名匹配,然后应用 intersect功能。
N <- ncol(data)
combos <- expand.grid(1:N,1:N) %>%
filter(!Var1==Var2)
combos <- combos[!duplicated(t(apply(combos[1:2], 1, sort))),]

最佳答案

您可以使用 combn使用 length 创建列名组合并计算它们之间的公共(public)值和 intersect .

val <- combn(names(data), 2, function(x) 
length(intersect(data[[x[1]]], data[[x[2]]])))

names(val) <- combn(names(data), 2, paste0, collapse = '_')
val
#AA_AB AA_AC AA_AD AB_AC AB_AD AC_AD
# 3 2 3 2 2 2

关于r - 查找所有变量对之间的相交长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64736772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com