从TSV文件中,我有两个表.

例如,

表1:V_ONE

readId V_segment
abc IGHV3-18-F(2695)
ghi IGHV3-9-F(2840)

表2:V_Two

readId V_segment
def IGHV3-9-F(2714),IGHV3-12-F(2656)
jkl IGHV3-10-F(2666),IGHV3-18-F(2666)

我需要创建另一个表,在该表中,对于这两个新表的列"V_Segment"中的每个唯一值,我将获得每个唯一值在TSV文件的列"V_Segment"中出现的次数的计数.

例如:

V_segment Count
IGHV3-18-F 3
IGHV3-9-F 15
IGHV3-9-F,IGHV3-12-F 4
IGHV3-10-F,IGHV3-18-F 7

我试过这个代码:

df <- read_tsv('file.tsv') # tsv file with lots of columns
segmV <- data.frame(df$readId, df$V_Segment, stringsAsFactors = FALSE) # create a data frame with two columns of the tsv file
V_one <- segmV[!grepl(",", df$V_Segment),] # table 1
V_two <- segmV[grepl(",", df$V_Segment),] # table 2

v1 <- V_one %>%
      group_by(V_one$V_Segment) %>%
      mutate(Count = n_distinct(V_one$V_Segment))

但它不起作用,因为(为此)我需要忽略括号中的信息.

你能帮我个忙吗?

提前谢谢您!

推荐答案

library(dplyr)

bind_rows(mget(ls(pattern = "V_"))) %>%  
  count(V_segment)

# A tibble: 4 × 2
  V_segment                             n
  <chr>                             <int>
1 IGHV3-10-F(2666),IGHV3-18-F(2666)     1
2 IGHV3-18-F(2695)                      1
3 IGHV3-9-F(2714),IGHV3-12-F(2656)      1
4 IGHV3-9-F(2840)                       1

各个细分市场:

bind_rows(mget(ls(pattern = "V_"))) %>% 
  mutate(across(V_segment, ~ str_remove_all(.x, "\\(.*?\\)"))) %>%  
  count(V_segment)

# A tibble: 4 × 2
  V_segment                 n
  <chr>                 <int>
1 IGHV3-10-F,IGHV3-18-F     1
2 IGHV3-18-F                1
3 IGHV3-9-F                 1
4 IGHV3-9-F,IGHV3-12-F      1

R相关问答推荐

行式dppr中的变量列名

咕噜中的元素列表:map

为什么观察不会被无功值变化触发?

RStudio中相关数据的分组箱形图

在R中使用数据集名称

如何在R中对深度嵌套的tibbles中的非空连续行求和?

如何调整曲线图中的y轴标签?

一小时满足条件的日期的 Select

在R中使用Scale_y_Break后更改y轴标签

plotly hover文本/工具提示在shiny 中不起作用

绘制采样开始和采样结束之间的事件

R中边际效应包中Logistic回归的交互作用风险比

将选定的索引范围与阈值进行比较

将多个列值转换为二进制

我们如何在R中透视数据并在之后添加计算

通过初始的shiny 应用更新部署的shiny 应用的数据和参数,其中部署的应用程序显示为URL

在R中的数据框上使用Apply()函数时,如何保留非数字列?

TidyVerse中长度不等的列结合向量

R中从因数到数字的转换

在直方图中显示两个变量