如果需要逐行事件,您可以通过@ThomsIsCoding修改答案:
m <- tcrossprod(table(stack(as.data.frame(t(df))))[-1,])
m
#> values
#> values asca banana blueberry lime mango pepper pineapple salt strawberry sugar water
#> asca 3 1 1 1 0 1 2 2 1 1 2
#> banana 1 1 1 0 0 0 1 1 1 1 1
#> blueberry 1 1 2 0 1 0 2 2 1 2 2
#> lime 1 0 0 2 0 1 1 1 0 1 2
#> mango 0 0 1 0 2 0 1 1 0 1 1
#> pepper 1 0 0 1 0 1 0 1 0 0 1
#> pineapple 2 1 2 1 1 0 4 2 1 3 3
#> salt 2 1 2 1 1 1 2 3 1 2 3
#> strawberry 1 1 1 0 0 0 1 1 1 1 1
#> sugar 1 1 2 1 1 0 3 2 1 3 3
#> water 2 1 2 2 1 1 3 3 1 3 4
如果需要,可以将主对角线设置为0
.
diag(m) <- 0
m
#> values
#> values asca banana blueberry lime mango pepper pineapple salt strawberry sugar water
#> asca 0 1 1 1 0 1 2 2 1 1 2
#> banana 1 0 1 0 0 0 1 1 1 1 1
#> blueberry 1 1 0 0 1 0 2 2 1 2 2
#> lime 1 0 0 0 0 1 1 1 0 1 2
#> mango 0 0 1 0 0 0 1 1 0 1 1
#> pepper 1 0 0 1 0 0 0 1 0 0 1
#> pineapple 2 1 2 1 1 0 0 2 1 3 3
#> salt 2 1 2 1 1 1 2 0 1 2 3
#> strawberry 1 1 1 0 0 0 1 1 0 1 1
#> sugar 1 1 2 1 1 0 3 2 1 0 3
#> water 2 1 2 2 1 1 3 3 1 3 0
生效日期:
df <- data.table::fread("name1 name2 name3 name4 name5 name6 name7 name8
pineapple sugar mango water salt blueberry
pineapple asca
sugar pineapple water lime
lime asca pepper salt water
blueberry pineapple water salt strawberry banana asca sugar
mango ")