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

如何计算R语言字符串变量中各字符的占比?

计算字符串变量中单个字符的占比

示例数据集

a <- c("CC", "CCAA", "ABB")   
id <- c("a", "b", "c")    
data <- data.frame(id, a)
head(data)
#  id    a
#1  a   CC
#2  b CCAA
#3  c  ABB

现有实现:统计每行字符串的占比

library(data.table)
data1 <- setDT(data)[, .N, .(a)][, perc := N/sum(N), .()][]
head(data1)
#       a N      perc
# 1:   CC 1 0.3333333
# 2: CCAA 1 0.3333333
# 3:  ABB 1 0.3333333

需求目标

统计整个a变量中每个单个字符的出现次数及占比,预期输出:

#              a  N   perc
# 1:           A  3   0.33
# 2:           B  2   0.22
# 3:           C  4   0.44 

解决方案

方法1:R Base原生实现

# 拆分所有字符串为单个字符
chars <- unlist(strsplit(data$a, ""))
# 统计字符出现次数
char_counts <- table(chars)
# 转换为数据框并计算占比
result_base <- data.frame(
  a = names(char_counts),
  N = as.integer(char_counts),
  perc = round(as.numeric(char_counts)/sum(char_counts), 2)
)

# 查看结果
result_base
#   a N perc
# A A 3 0.33
# B B 2 0.22
# C C 4 0.44

方法2:tidyverse生态实现

library(tidyverse)

result_tidy <- data %>%
  # 将每个字符串拆分为单个字符,展开为多行
  mutate(a = str_split(a, "")) %>%
  unnest(a) %>%
  # 统计每个字符的出现次数
  count(a, name = "N") %>%
  # 计算占比并保留两位小数
  mutate(perc = round(N/sum(N), 2))

# 查看结果
result_tidy
# # A tibble: 3 × 3
#   a         N  perc
#   <chr> <int> <dbl>
# 1 A         3  0.33
# 2 B         2  0.22
# 3 C         4  0.44

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:57:31