繁体   English   中英

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

[英]How to count number of occurrences in a specific column that meet a condition (4 letters)

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

^^我希望输出是 y 列中 4 个字母出现的次数。 期望的输出是 2

我想计算数据框中给定列中出现 4 个字母因子观测值的次数。 我该怎么做呢?

如果您只想提取和计算恰好有 4 个字母(任何字母,不一定相同)的因子值,那么您可以这样做:

步骤 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

如果y列中的字符串总是由字母组成,也许您可​​以尝试nchar

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM