0

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

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”的字符串的频率任何人有一个快速的解决方案?

4

3 回答 3

2

我从你的问题推测你的意思是有一些出现不止一次的条目,所以我添加了一个重复的字符串:

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

要仅查找那些包含特定模式的字符串,请使用grepor grepl

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

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

table(y)

y
      abcd    hfjfjcd kgjgcdjrye  twtettecd 
         2          1          1          1 

您可以使用plotbarplot如下绘制它:

barplot(table(y))

在此处输入图像描述

于 2011-06-26T16:30:30.527 回答
1

检查“Kernlab”包。您可以定义一个内核(模式),它可以是任何类型的字符串并在以后计算它们。

于 2011-06-26T23:36:17.487 回答
1

其他人已经提到了grepl。这是一个 plot.density 的实现,使用 grep 来获取匹配的位置在此处输入图像描述

plot( density(0+grepl("cd", strings)) )

如果您不喜欢将密度图扩展到范围之外,“logspline”包中还有其他方法可以让您在范围极端处获得清晰的边界。搜索 RSiteSearch

于 2011-06-26T16:54:07.327 回答