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

R语言:按行统计指定列特定字符出现次数并生成新列

解决R语言按行统计字符串出现次数的问题

原始数据

首先定义目标数据框:

Var1 <- c("Hnt_Pri_Pri_Sec_Sup", "Hnt_Sup_Sup_Sec_Sec", "Hnt_Pri_Sec_Pri_Sup")
Var2 <- c("LiG_Pri_Sec_Sec_Sup", "LiG_Sec_Sup_Pri_Sup", "LiG_Pri_Pri_Pri_Pri")
Var3 <- c("Nam_Pri_Pri_Sec_Pri", "Nam_Sec_Sec_Sup_Pri", "Nam_Sup_Pri_Pri_Sec")
df <- data.frame(Var1, Var2, Var3)

原始数据输出:

df
                 Var1                Var2                Var3
1 Hnt_Pri_Pri_Sec_Sup LiG_Pri_Sec_Sec_Sup Nam_Pri_Pri_Sec_Pri
2 Hnt_Sup_Sup_Sec_Sec LiG_Sec_Sup_Pri_Sup Nam_Sec_Sec_Sup_Pri
3 Hnt_Pri_Sec_Pri_Sup LiG_Pri_Pri_Pri_Pri Nam_Sup_Pri_Pri_Sec

需求

  • 按行统计字符串"Pri"的出现次数,生成新列pri_count
  • 按相同逻辑统计"Sec"的出现次数,生成新列sec_count

解决方案

使用stringr包中的str_count函数,结合sapply和rowSums实现按行统计:

  1. 加载stringr包:
library(stringr)
  1. 统计"Pri"的出现次数并生成pri_count列:
df$pri_count <- rowSums(sapply(df, str_count, pattern = "Pri"))
  1. 统计"Sec"的出现次数并生成sec_count列:
df$sec_count <- rowSums(sapply(df, str_count, pattern = "Sec"))

最终结果

执行上述代码后,数据框输出如下:

df
                 Var1                Var2                Var3 pri_count sec_count
1 Hnt_Pri_Pri_Sec_Sup LiG_Pri_Sec_Sec_Sup Nam_Pri_Pri_Sec_Pri         6         4
2 Hnt_Sup_Sup_Sec_Sec LiG_Sec_Sup_Pri_Sup Nam_Sec_Sec_Sup_Pri         2         5
3 Hnt_Pri_Sec_Pri_Sup LiG_Pri_Pri_Pri_Pri Nam_Sup_Pri_Pri_Sec         8         2

说明

之前使用str_count失败的核心原因是直接将整个数据框传入函数,未逐列处理。通过sapply遍历数据框的每一列,对每个元素统计目标字符串的出现次数,得到次数矩阵后,再用rowSums对每行的次数求和,即可得到每行的总出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:15:47