x = c(1,2,3,4,5)
y = c("AA","BB","CC", "AAAA","BBBB")
data1 = data.frame(x,y)
data1
^^我希望输出为y列中4个字母出现的时间。所需的输出为2
我想计算在数据框中给定列中发生4个字母因子观测的次数。我该怎么做?
答案 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