Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中存在重复项的情况下查找两列中的值(已编辑)_R_Genetics - Fatal编程技术网

在R中存在重复项的情况下查找两列中的值(已编辑)

在R中存在重复项的情况下查找两列中的值(已编辑),r,genetics,R,Genetics,作为一个新手,我正努力用一个大数据集解决以下问题。 我想在“CHROM”列中查找比较克隆ID的两列的值(第二列包含重复项)。 相应的“色度”值将归属于每个“克隆人”,相同的值将归属于其副本。我写下此表作为示例: CLONEID | CHROM 976803 | 2A 976877 | 5B 976952 | 6B 976961 | 3B 976975 | 1A 977084 | 7B 977228 | 4A 977241 | 3A 我希望获得

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

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

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

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'
)
库(dplyr)

df您如何决定需要复制哪一行以及复制多少次?很难理解您的期望,因为第一个表不包含第二个表中出现的大多数条目,因此我们无法进行关联并确定规则是什么。也许你可以举个长一点的例子。另外,当CLONEDID的色度相同时,它们是否会被重命名为一个尾随序列号?@user2332849是的,我同意。对不起,我没有包括第一个条目。我现在改正了。是的,克隆人在追求相同的色度时会按顺序编号重命名。@RonakShah我已经知道应该复制的特定行。因此,一个可以像VLOOKUP一样工作的代码,它检测例如977084,并将色度属性设置为977084和977084。。。基本上,977084=977084_1=977084_2。告诉
977084
的信息在哪里。需要重复2次和977228 4次。为什么只有2次和4次,而不是1次、3次或10次?嗯,没有反馈
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