gpt4 book ai didi

sql - 独特的组合频率

转载 作者:行者123 更新时间:2023-12-02 05:05:52 26 4
gpt4 key购买 nike

我有一个包含 10 列的数据集。第一列是唯一标识符。其他 9 列是相关属性。现在,我们只说它们是整数。如果需要,数据可以轻松地转换为键值。

例如:

id|attr1|attr2|attr3|...
a | 2 | 5 | 7 |...
b | 3 | 1 |null |...
c | 2 |null |null |...
d | 1 | 2 | 5 |...
e | 2 | 1 | 3 |...

我本质上是在寻找任意长度的最常见组合,至少有一对。所以我的输出是:

unq   | frequency
1,2 | 2
1,3 | 2
1,5 | 1
2,3 | 1
2,5 | 2
2,7 | 1
1,2,3 | 1
1,2,5 | 1
2,5,7 | 1

(手动完成此操作 - 希望没有错误) - 配对的顺序并不重要。 2,5,7 = 5,2,7 = 7,5,2 等

有什么想法吗?我对不同的工具持开放态度。我可以访问 R、Excel、sql server、mysql 等。

Excel 是首选,但不是必需的!

最佳答案

这是 R 中的解决方案:

重新创建数据

x <- data.frame(
id = letters[1:5],
attr1 = c(2,3,2,1,2),
attr2 = c(5,1,NA,2,1),
attr3 = c(7,NA,NA,5,3))
x

id attr1 attr2 attr3
1 a 2 5 7
2 b 3 1 NA
3 c 2 NA NA
4 d 1 2 5
5 e 2 1 3

创建一个函数来列出所有组合

make_combinations <- function(data, size){
t1 <- apply(data[, -1], 1, function(data)unname(sort(data)))
t2 <- lapply(t1, function(xt){if(length(xt)>=size){combn(xt, size)}})
t3 <- sapply(t2[!is.na(t2)],
function(chunk){if(!is.null(chunk))apply(chunk, 2, function(x)paste(x, collapse=","))})
t4 <- unlist(t3)
t4
}

创建第二个函数来计算组合

count_combinations <- function(data, nn=2:3){
tmp <- unlist(lapply(nn, function(n)make_combinations(data, n)))
sort(table(tmp), decreasing=TRUE)
}

结果:

count_combinations(x, 2:3)


1,2 1,3 2,5 1,2,3 1,2,5 1,5 2,3 2,5,7 2,7 5,7
2 2 2 1 1 1 1 1 1 1

关于sql - 独特的组合频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308448/

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