【问题标题】:lookup for values in two columns in the presence of duplicates in R (edited)在 R 中存在重复项的情况下查找两列中的值(已编辑)
【发布时间】:2020-03-18 01:03:14
【问题描述】:

作为一个新手,我正在努力用一个大数据集解决以下问题。 我想在“CHROM”列中查找比较两列 CLONEID 的值(第二列包含重复项)。 相应的“CHROM”值将归属于每个“CLONEID”,而相同的值将归属于其副本。我写这张表作为例子:

CLONEID   | CHROM
976803    | 2A
976877    | 5B
976952    | 6B
976961    | 3B
976975    | 1A
977084    | 7B
977228    | 4A
977241    | 3A

我想获得以下输出:

CLONEID   | CHROM
976803    |2A
976877    |5B
976952    |6B
976961    |3B
976975    |1A
977084    |7B
977084_1  |7B
977228    |4A
977228_1  |4A
977228_2  |4A
977228_3  |4A
977241    |3A

【问题讨论】:

  • 如何确定需要复制哪一行以及复制多少次?
  • 很难理解您的期望,因为第一个表不包含出现在第二个表中的大多数条目,因此我们无法进行关联并确定规则是什么。也许如果你做了一个更长的例子。另外,当它们具有相同的 CHROM 时,CLONEDID 是否会使用尾随序列号重命名?
  • @user2332849 是的,我同意。对不起,我没有包括第一个条目。我现在做了更正。是的,当 CLONEID 追求相同的 CHROM 时,它们会以序列号重命名。
  • @RonakShah 我已经知道应该复制的特定行。因此,可以像 VLOOKUP 一样运行的代码检测例如 977084 并将 CHROM 归因于 977084 和 977084_... 基本上,977084=977084_1=977084_2。
  • 告诉977084的信息在哪里。需要重复 2 次和 977228 4 次。为什么只有 2 次和 4 次而不是 1、3 或 10 次?

标签: r genetics


【解决方案1】:

好的,我用你提供的部分数据做了一个假设的例子。

library(dplyr)

df <- tribble(
  ~CLONEID, ~CHROM,
  '976803', '2A',
  '976877', '5B',
  '976952', '6B',
  '976961', '3B',
  '976975', '1A',
  '977084', '7B',
  '977228', '4A',
  '977241', '3A',
  '977252', '7B',
  '977303', '4A',
  '977315', '4A',
  '977422', '4A'
)

我们按 CHROM 分组,因此我们可以识别重复项并使用原始 CLONEID 和顺序编号,从 1 开始。重命名后,我们重新排序,以便新的 CLONEID 一起出现。

df <-
  df %>%
  group_by(CHROM) %>%
  mutate(CLONEID = ifelse(row_number() == 1, CLONEID, paste0(first(CLONEID), "_", row_number()-1))) %>%
  ungroup() %>%
  arrange(CLONEID)

print(df)

输出

   CLONEID  CHROM
   <chr>    <chr>
 1 976803   2A   
 2 976877   5B   
 3 976952   6B   
 4 976961   3B   
 5 976975   1A   
 6 977084   7B   
 7 977084_1 7B   
 8 977228   4A   
 9 977228_1 4A   
10 977228_2 4A   
11 977228_3 4A   
12 977241   3A 

【讨论】:

  • 嗯。没有反馈
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 2016-03-02
  • 2020-03-30
  • 2011-10-31
  • 2023-02-02
  • 2015-10-24
  • 1970-01-01
相关资源
最近更新 更多