给定一个包含字符串的列的数据框。我想绘制具有特定模式的字符串的频率。例如
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”的字符串的频率 有快速解决方案的人吗?
答案 0 :(得分:2)
我从你的问题中推测,你打算让一些条目出现不止一次,所以我添加了一个重复的字符串:
x <- c("abcd","abcd","defd","hfjfjcd","kgjgcdjrye","yryriiir","twtettecd")
要仅查找包含特定模式的字符串,请使用grep
或grepl
:
y <- x[grepl("cd", x)]
要获得频率表,您可以使用table
table(y)
y
abcd hfjfjcd kgjgcdjrye twtettecd
2 1 1 1
您可以使用plot
或barplot
进行绘图,如下所示:
barplot(table(y))
答案 1 :(得分:1)
其他人已经提到了grepl。以下是使用grep获取plot.density的实现,以获取匹配
的位置plot( density(0+grepl("cd", strings)) )
如果您不喜欢超出范围的密度图的扩展,那么'logspline'包中还有其他方法可以让人们在极端范围内获得清晰的边界。搜索RSiteSearch
答案 2 :(得分:1)
检查"Kernlab"包。 您可以定义一个内核(模式),它可以是任何类型的字符串,并在以后对其进行计数。