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

如何在R语言多列中统计特定字符(如stateA)的出现次数

统计特定字符出现次数的简洁实现方法

需求:仅统计特定值(如'stateA')在数据框各列的出现次数,不使用table()函数,结果可存储为新数据框或追加至原数据框最后一行。

示例数据:

df <- data.frame(
  var1 = c(paste0('state', sample(LETTERS[1:20], 1000, replace = T))),
  var2 = c(paste0('state', sample(LETTERS[1:20], 1000, replace = T))),
  var3 = c(paste0('state', sample(LETTERS[1:20], 1000, replace = T))),
  var4 = c(paste0('state', sample(LETTERS[1:20], 1000, replace = T))),
  var5 = c(paste0('state', sample(LETTERS[1:20], 1000, replace = T)))
)

方法1:生成新数据框

利用colSums()直接对每列的布尔匹配结果求和,效率远高于遍历所有值的table():

# 计算每列中stateA的出现次数
stateA_counts <- colSums(df == 'stateA')
# 转换为行式数据框
result_df <- as.data.frame(t(stateA_counts))
# 可选:为统计行命名
rownames(result_df) <- 'stateA_出现次数'

运行后result_df就是仅包含目标值统计结果的新数据框。

方法2:追加至原数据框末尾

将统计结果转成与原列类型匹配的格式后,用rbind()追加:

# 计算各列stateA的次数
counts <- colSums(df == 'stateA')
# 转换为字符型(匹配原数据框列类型)
counts_char <- as.character(counts)
# 追加到原数据框最后一行
df <- rbind(df, counts_char)
# 可选:为新增行命名
rownames(df)[nrow(df)] <- 'stateA_出现次数'

说明

colSums(df == 'stateA')是核心逻辑:df == 'stateA'生成一个布尔矩阵,每个元素表示对应位置是否等于目标值,colSums()直接对每列求和得到该列目标值的出现次数,完全无需统计其他无关值,符合需求且高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:35:22