我有一个类似以下数据的列
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,但没有出现。
答案 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*')))