You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动统计字符串中重复次数最高的字符/数字的出现次数

R语言统计字符串最高频次字母/数字的实现方法

实现思路

  • 先从输入字符串中分别提取字母、数字两类独立字符
  • 对字母类可按需选择是否忽略大小写(根据你的示例数据,默认不区分大小写匹配)
  • 统计每类字符的出现频次,返回最高频次值,无对应类型字符时返回0

tidyverse 实现方案(适合批量处理数据框)

1. 构造示例数据

library(tidyverse)
# 示例数据框
df <- tibble(
  col1 = c("apples333", "summer13", "talk77", "Aa6668")
)

2. 自定义统计函数

# 统计最高出现频次的字母次数
max_letter_count <- function(x, case_sensitive = FALSE) {
  chars <- str_extract_all(x, "[A-Za-z]")[[1]]
  if (length(chars) == 0) return(0)
  # 不区分大小写则统一转小写
  if (!case_sensitive) chars <- str_to_lower(chars)
  max(table(chars))
}

# 统计最高出现频次的数字次数
max_number_count <- function(x) {
  nums <- str_extract_all(x, "[0-9]")[[1]]
  if (length(nums) == 0) return(0)
  max(table(nums))
}

3. 批量应用到数据框

df <- df %>%
  rowwise() %>%
  mutate(
    repeated_letter = max_letter_count(col1),
    repeated_number = max_number_count(col1)
  ) %>%
  ungroup()

运行后得到的结果和你给出的示例完全匹配。

Base R 实现方案(无需额外安装依赖包)

# 字母统计函数
max_letter_count_base <- function(x, case_sensitive = FALSE) {
  chars <- regmatches(x, gregexpr("[A-Za-z]", x))[[1]]
  if (length(chars) == 0) return(0)
  if (!case_sensitive) chars <- tolower(chars)
  max(table(chars))
}

# 数字统计函数
max_number_count_base <- function(x) {
  nums <- regmatches(x, gregexpr("[0-9]", x))[[1]]
  if (length(nums) == 0) return(0)
  max(table(nums))
}

# 批量应用到数据框
df$repeated_letter <- sapply(df$col1, max_letter_count_base)
df$repeated_number <- sapply(df$col1, max_number_count_base)

参数说明

如果需要区分字母大小写,只需将函数的case_sensitive参数设置为TRUE即可。

内容的提问来源于stack exchange,提问作者vicky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:03