gpt4 book ai didi

r - 循环遍历数据帧 : counting each pairwise combination of a value for each unique variable.

转载 作者:行者123 更新时间:2023-12-04 05:46:18 24 4
gpt4 key购买 nike

我有一个名为“df”的数据框,如下所示:

ID  Value
1 a
1 b
1 c
1 d
3 a
3 b
3 e
3 f
. .
. .
. .

我有一个像这样用零填充的矩阵:

  a b c d e f 
a x 0 0 0 0 0
b 0 x 0 0 0 0
c 0 0 x 0 0 0
d 0 0 0 x 0 0
e 0 0 0 0 x 0
f 0 0 0 0 0 x

然后我想像这样遍历数据框:

for each ID, for each value i, for each value j != i, matrix[i,j] += 1 

因此对于每个 ID,对于值的每个组合,我想将矩阵中的值增加 1,结果是:

  a b c d e f 
a x 2 1 1 1 1
b 2 x 1 1 1 1
c 1 1 x 1 0 0
d 1 1 1 x 0 0
e 1 1 0 0 x 1
f 1 1 0 0 1 x

例如,[a,b] = 2,因为这种值的组合出现在两个不同的 ID 上,而 [a,c] = 1,因为这种值的组合仅在 ID = 1 时出现,而不是在 ID 时出现= 3.

我怎样才能做到这一点?我已经制作了一个包含唯一 ID 的向量。

提前致谢。

最佳答案

最简单的方法是获取,然后执行crossprod

out <- crossprod(table(df))
diag(out) <- NA #replace the diagonals with NA
names(dimnames(out)) <- NULL #set the names of the dimnames as NULL
out
# a b c d e f
#a NA 2 1 1 1 1
#b 2 NA 1 1 1 1
#c 1 1 NA 1 0 0
#d 1 1 1 NA 0 0
#e 1 1 0 0 NA 1
#f 1 1 0 0 1 NA

数据

df <- structure(list(ID = c(1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L), Value = c("a", 
"b", "c", "d", "a", "b", "e", "f")), .Names = c("ID", "Value"
), class = "data.frame", row.names = c(NA, -8L))

关于r - 循环遍历数据帧 : counting each pairwise combination of a value for each unique variable.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856411/

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