如何计算满足条件的特定列中的出现次数(4个字母)

时间:2020-02-06 16:53:06

标签: r

x = c(1,2,3,4,5)
y = c("AA","BB","CC", "AAAA","BBBB")
data1 = data.frame(x,y)
data1

^^我希望输出为y列中4个字母出现的时间。所需的输出为2

我想计算在数据框中给定列中发生4个字母因子观测的次数。我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果您只想提取和计数正好有4个字母(任何字母,不一定是 same )的因子值,则可以执行以下操作:

第1步-定义要匹配的模式:

pattern <- "\\w{4}"

第2步-定义一个仅提取原始匹配项的函数:

extract <- function(x) unlist(regmatches(x, gregexpr(pattern, x, perl = T)))

第3步-将功能应用于感兴趣的数据:

extract(data1$y)

这就是结果:

[1] "AAAA" "BBBB"

第4步-要计算匹配数,您可以使用length

length(extract(data1$y))
[1] 2

编辑: 或者,您可以使用str_extract包中的stringr

步骤1:将结果存储在向量extr中:

extr <- str_extract(data1$y, "\\w{4}")

第2步:使用length,求反运算符!is.na(用于测试NA并得出TRUE和FALSE的函数),您可以计算该测试的次数评估为FALSE:

length(extr[!is.na(extr)])
[1] 2

答案 1 :(得分:0)

如果列nchar中的字符串始终由字母组成,则可以尝试y

sum(nchar(as.vector(data1$y))==4)

# > sum(nchar(as.vector(data1$y))==4)
#   2