仅使用特殊字符R计数单元格

仅使用特殊字符R计数单元格,r,count,R,Count,我有一个data.frame,如下所示。我想得到一个没有一个数字或a-to-z的单元格列表,以及它们的频率。我怎么能这么做?如果有以下数据,我需要一个表格。在表的第一列中,我将使用*和。第二列将显示这些值的频率(分别为1和2)。“a*”和“21.9”不会出现,因为它们至少包含一个数字或a-z sm <- matrix(c(51,".",22,"*","a*","21.9",".",22,9),ncol=3,byrow=TRUE) smdf<-as.data.frame(sm) sm

我有一个data.frame,如下所示。我想得到一个没有一个数字或a-to-z的单元格列表,以及它们的频率。我怎么能这么做?如果有以下数据,我需要一个表格。在表的第一列中,我将使用*和。第二列将显示这些值的频率(分别为1和2)。“a*”和“21.9”不会出现,因为它们至少包含一个数字或a-z

sm <- matrix(c(51,".",22,"*","a*","21.9",".",22,9),ncol=3,byrow=TRUE)
smdf<-as.data.frame(sm)

sm这是否提供了您想要的

require(plyr)
sm <- matrix(c(51,".",22,"*","a*","21.9",".",22,9),ncol=3,byrow=TRUE)
count(sm[!grepl("[[:alnum:]]", sm)])

  x freq
1 *    1
2 .    2
require(plyr)

山猫,我不知道我明白你想要什么<代码>应用(smdf,1,函数(x)!grepl(“[a-z0-9]”,x))
将为您提供一个矩阵,该矩阵将告诉您smdf的每个条目是否至少包含一个a-z或0-9。我不明白第二步。您需要包含
*
的单元格计数。如果一个单元格同时包含这两个元素呢?您关心的是一般的特殊字符还是这两个字符?是的,输出是正确的。能否简要解释一下它是如何工作的?@user2543622,它正在使用。
[[:alnum:][/code>使用
grepl
函数选择所有包含字母数字字符的字符。不选择(
!grepl(…)
)从原始矩阵开始,最后使用plyr包中的nice count函数计算剩余的。确保当
sm
中的一个条目是
'*.
'**'.
时,这符合您的要求。我在data.frame上运行了上述解决方案,但没有得到所需的结果。因此,我将data.frame转换为matrix,它成功了:)。但它也打印出两个条目“空白值”和“…知道为什么吗?空格不是字母数字字符。就解决方案而言,它是一个“特殊字符”。至于,您的数据帧是否包含NAs?
sm <- matrix(c(51,".",22,"*","a*","21.9",".",22,9, " ", NA, 13),ncol=3,byrow=TRUE)
count(sm[!grepl("[[:alnum:]]", sm) & !is.na(sm) & sm != " "])

  x freq
1 *    1
2 .    2
sm <- matrix(c(51,".",22,"*","a*","21.9",".",22,9, " ", NA, 13),ncol=3,byrow=TRUE)
x <- unlist(strsplit("*~!@#$%^&(){}_+:\"<>?,./;'[]-=", split=""))
count(sm[sm %in% x])

  x freq
1 *    1
2 .    2