簡體   English   中英

在R中找到重復的圖案

[英]Find a pattern with duplicates in R

在R中,我有一個包含數據的列表列表,例如

1 "a" "b" "c"
2 "a" "a" "b" "d"
3 "a" "a"

我需要在列表中確定常見的模式。 例如,在這里,“ a”“ a”和“ a”“ b”是常見的。 我嘗試使用eclat(),但是不允許每個列表中都有重復的值。 然后,我嘗試刪除重復的值,但隨后丟失了信息(例如“ a”,“ a”是一種常見模式)。

我也嘗試重命名重復出現的內容,但是“ a”“ b”和“ a”“ a”“ b”不會將“ a”“ b”作為模式返回,因為第二個列表將重命名為類似“ a”“ a2”“ b”。

有什么更好的方法嗎?

更新:

每個列表中的字符串可以是單個字符或字符串。 例如

1 "a+12" "bfd" "c"
2 "a+12" "a+12" "bfd" "d"
3 "a+12" "a+12" "a"

這里,“ a + 12”,“ bfd”和“ a + 12”,“ a + 12”應被識別為模式

至少對於示例數據而言,類似以下內容看起來很有幫助:

#data in a 'list'
myls = list(x1 = c("a+12", "bfd", "c"), 
            x2 = c("a+12", "a+12", "bfd", "d"),
            x3 = c("a+12", "a+12", "a"))

pats = table(unlist(lapply(myls, 
           function(x) combn(seq_along(x), 2, 
                             function(i) paste(x[i[1]:i[2]], collapse = ";")))))
strsplit(names(pats[pats == max(pats)]), ";")
#[[1]]
#[1] "a+12" "a+12"
#
#[[2]]
#[1] "a+12" "bfd"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM