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

如何在R中统计TSV文件两数据框V_segment去括号后唯一值计数

解决方案

步骤说明

无需分开处理V_one和V_two,合并后统一处理更高效。核心是用正则精准去除括号及内部所有内容(包括括号内的逗号),再分组统计出现次数。

完整代码

# 加载所需工具包
library(tidyverse)

# 合并两个数据框
combined_df <- bind_rows(V_one, V_two)

# 清洗V_segment并统计次数
result <- combined_df %>%
  # 移除所有括号及括号内的内容
  mutate(clean_V_segment = str_replace_all(V_segment, "\\(.*?\\)", "")) %>%
  # 按清洗后的字段分组,统计每组出现次数
  group_by(clean_V_segment) %>%
  summarise(Count = n(), .groups = "drop") %>%
  # 重命名列名匹配示例输出
  rename(V_segment = clean_V_segment)

# 查看最终结果
print(result)

正则表达式说明

\\(.*?\\):

  • \\(:转义匹配左括号(括号在正则中是特殊字符,需转义)
  • .*?:非贪婪匹配任意字符,确保只匹配到最近的右括号,避免多括号场景下的过度匹配
  • \\):转义匹配右括号

特殊场景兼容

针对V_table3中括号内带逗号的情况(比如IGHV3-10-F(242,9)),上述正则依然有效,会完整移除括号内的所有内容,得到干净的IGHV3-10-F。

简化版(直接从原始TSV处理)

如果不需要提前拆分V_one和V_two,直接从原始TSV文件处理更简洁:

df <- read_tsv('file.tsv')

result <- df %>%
  mutate(clean_V_segment = str_replace_all(V_segment, "\\(.*?\\)", "")) %>%
  group_by(clean_V_segment) %>%
  summarise(Count = n(), .groups = "drop") %>%
  rename(V_segment = clean_V_segment)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:45:09