在R中存在重复项的情况下查找两列中的值(已编辑)
作为一个新手,我正努力用一个大数据集解决以下问题。 我想在“CHROM”列中查找比较克隆ID的两列的值(第二列包含重复项)。 相应的“色度”值将归属于每个“克隆人”,相同的值将归属于其副本。我写下此表作为示例:在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 我希望获得
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