如何在列中查找唯一模式并计算其出现次数?

时间:2015-02-11 21:51:06

标签: r

我有一个类似以下数据的列

    A, B, C, D
    B, C, 
    A, B, C, D
    B, C
    AB, ACD, GJ

请注意,有几个这样的字母:AB,BFC,TRD,RE等。所以我需要找到一些自动的方式来将模式作为参数。

当我发出summary(data$column1)时,我得到A,B,C,D是2而B,C是2.但我想得到A 2,B 4,C,4,D 2.怎么能我使用","作为分隔符并完成这个?

我还使用了unique(data$column1)。它只产生了唯一的值A,B,C,D和B,C,但没有出现。

2 个答案:

答案 0 :(得分:2)

您可以尝试:

str=paste(df$col, collapse=',')
rle(sort(strsplit(gsub("[^A-Z]","",str), '')[[1]]))

或@David Arenburg提议:

table(strsplit(gsub("[^A-Z]","",str), '')[[1]])

数据:

df=data.frame(col=c("A,B,C,D","B,C","A,B,C,D","B,C","ABBBCCDD"))

答案 1 :(得分:0)

您可以像这样使用strsplit

x = c("a,b,c","a,b","b,c,d,e")
table(unlist(strsplit(x,',')))

由于分割模式是正则表达式,您可以使用值和逗号之间的任何空格,如下所示:

table(unlist(strsplit(x,'\\s*,\\s*')))