R绘制具有特定模式的字符串的频率

时间:2011-06-26 16:11:47

标签: r dataframe frequency-analysis

给定一个包含字符串的列的数据框。我想绘制具有特定模式的字符串的频率。例如

strings  <- c("abcd","defd","hfjfjcd","kgjgcdjrye","yryriiir","twtettecd")
df <- as.data.frame(strings)
df
     strings
1       abcd
2       defd
3    hfjfjcd
4 kgjgcdjrye
5   yryriiir
6  twtettec

我想绘制包含模式“cd”的字符串的频率 有快速解决方案的人吗?

3 个答案:

答案 0 :(得分:2)

我从你的问题中推测,你打算让一些条目出现不止一次,所以我添加了一个重复的字符串:

x <- c("abcd","abcd","defd","hfjfjcd","kgjgcdjrye","yryriiir","twtettecd")

要仅查找包含特定模式的字符串,请使用grepgrepl

y <- x[grepl("cd", x)]

要获得频率表,您可以使用table

table(y)

y
      abcd    hfjfjcd kgjgcdjrye  twtettecd 
         2          1          1          1 

您可以使用plotbarplot进行绘图,如下所示:

barplot(table(y))

enter image description here

答案 1 :(得分:1)

其他人已经提到了grepl。以下是使用grep获取plot.density的实现,以获取匹配enter image description here

的位置
plot( density(0+grepl("cd", strings)) )

如果您不喜欢超出范围的密度图的扩展,那么'logspline'包中还有其他方法可以让人们在极端范围内获得清晰的边界。搜索RSiteSearch

答案 2 :(得分:1)

检查"Kernlab"包。 您可以定义一个内核(模式),它可以是任何类型的字符串,并在以后对其进行计数。