识别列表中项目的频率

Identifying the frequency of items in the list

我有一个如下所示的数据框。

11,15,12,25
11,12
15,25
134,45,56
46
45,56
15,12
66,45,56,24,14,11,25,12,134

我想确定 pairs/triplets 或更高频率在数据中出现的频率。例如,在上面的数据中,对的出现如下所示

item     No of occurrence
11,12      3
11,25      2
15,12      2
15,25      2
.
.
45,56      3
134,45,56  2    ....and so on

我正在尝试为上述内容编写一个 R 代码,但我发现很难做到这一点。

给定 1 列 data.frame,用逗号分隔变量,以下内容应该会产生您想要的结果:

# split column into a list
myList <- strsplit(df$V1, split=",")
# get all pairwise combinations
myCombos <- t(combn(unique(unlist(myList)), 2))

# count the instances where the pair is present
myCounts <- sapply(1:nrow(myCombos), FUN=function(i) {
                   sum(sapply(myList, function(j) {
                              sum(!is.na(match(c(myCombos[i,]), j)))})==2)})

# construct final matrix
allDone <- cbind(matrix(as.integer(myCombos), nrow(myCombos)), myCounts)

这个 returns 矩阵,其中前两列是比较的项目,第三列是这些项目在 data.frame 行中的计数。

数据

df <- read.table(text="11,15,12,25
11,12
15,25
134,45,56
46
45,56
15,12
66,45,56,24,14,11,25,12,134", as.is=TRUE)