识别列表中项目的频率
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)
我有一个如下所示的数据框。
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)