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

如何用R计算目录下各文件中Value1列带“1”值的占比

R语言实现多文本文件的标识后缀占比计算

我有一个目录下的一系列结构一致的.txt文件,数据结构示例如下:

DateValue1Value2
2022-03-14 13:00:00AMRO 13
2022-03-14 13:10:00AMRO 14
2022-03-14 13:20:00DEJU5
2022-03-14 13:30:00MALL6
2022-03-14 13:40:00AMRO7
2022-03-14 13:50:00CHSP 18
2022-03-14 14:00:00AMRO40
2022-03-14 14:10:00AMRO50
2022-03-14 14:20:00DEJU 160
2022-03-14 14:30:00AMRO 170
2022-03-14 14:40:00AMRO80
2022-03-14 14:50:00CHSP90

需求是:针对每个文件,计算Value1列中每个基础标识(如AMRO)对应的带“ 1”后缀的条目数与该标识总条目数的比值。比如示例中AMRO系列共7条,其中3条带“1”,比值为3/7≈43%;DEJU为1/2=50%,MALL为0/1=0%,CHSP为1/2=50%。

以下是实现该需求的R语言方案:

1. 加载依赖包

使用tidyverse处理数据,fs简化文件路径操作(也可以用基础R的list.files替代):

# 未安装包时先执行安装
install.packages(c("tidyverse", "fs"))

# 加载包
library(tidyverse)
library(fs)

2. 定义单文件处理函数

编写函数读取单个文件并完成计算逻辑:

calculate_suffix_ratio <- function(file_path) {
  # 读取文本文件(默认制表符分隔,根据实际分隔符调整sep参数)
  df <- read_delim(file_path, delim = "\t", show_col_types = FALSE)
  
  # 提取基础标识、统计占比
  result <- df %>%
    mutate(
      # 提取基础标识:仅移除末尾的" 1"后缀
      base_id = str_remove(Value1, " 1$"),
      # 判断当前条目是否带" 1"后缀
      has_suffix = str_detect(Value1, " 1$")
    ) %>%
    group_by(base_id) %>%
    summarise(
      total_count = n(),
      suffix_count = sum(has_suffix),
      ratio = suffix_count / total_count,
      # 可选:转换为百分比格式
      ratio_percent = paste0(round(ratio * 100, 1), "%")
    ) %>%
    ungroup() %>%
    # 添加文件名,方便多文件结果区分
    mutate(filename = path_file(file_path))
  
  return(result)
}

3. 批量处理目录下所有文件

指定目标目录,批量处理所有.txt文件并合并结果:

# 替换为你的实际文件目录路径
target_dir <- "/path/to/your/txt/files"

# 获取目录下所有.txt文件的完整路径
txt_files <- dir_ls(target_dir, regexp = "\\.txt$")

# 批量处理并合并所有结果
all_results <- map_dfr(txt_files, calculate_suffix_ratio)

# 查看结果
print(all_results)

# 可选:将结果保存为CSV文件
write_csv(all_results, "suffix_ratio_results.csv")

关键说明

  • 如果你的文件是逗号分隔,将read_delim中的delim = "\t"改为delim = ",";
  • str_remove(Value1, " 1$")确保只移除末尾的" 1",避免误删标识本身包含的"1"字符;
  • 结果中的filename列可以帮你对应到原始文件;
  • ratio_percent列是可选的百分比格式,可根据需求删除或调整精度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:15:19