让我们假设我有:
> w
digest gene seq
1 InS AB0583 AAB
2 InS AB0583 AABKR
3 InS AB0583 GFHGHGG
4 PAC PU83022 EUT
5 PAC PU83022 HSFSFJF
6 PAC PU83022 EUTCK
7 PAC PU83022 EUTCKJ
8 InS PO93853 HDGJ
9 InS PO93853 HDGJU
10 InS PO93853 YTYEYD
11 InS PO93853 YTYEYDJHSGSG
12 InS PO93853 SALGHAGGEE
我应用了两种不同的方法来识别蛋白质(用它们的基因名称w$gene
进行解码).这些方法在w$digest
中被编码.如您所见,在每个w$digest
内的每个w$gene
内可能存在w$seq
的重叠序列--例如,EUT
也在EUTCK
内,即在EUTCKJ
内.
我想知道有多少独特的氨基酸,每w$seq
个字母中的一个,被识别出来.因此,我需要删除在另一个字符串中检测到的任何/所有字符串(S),但仅当grouped_by(digest, gene)
.应保留字符最多的字符串.
我要在tidyverse
分钟内找到解决方案
Help need:个
(1)统计字数,排列如下:
w <- w %>%
mutate(count = str_count(seq)) %>%
arrange(digest, gene, count)
所以
> w
digest gene seq count
1 InS AB0583 AAB 3
2 InS AB0583 AABKR 5
3 InS AB0583 GFHGHGG 7
4 InS PO93853 HDGJ 4
5 InS PO93853 HDGJU 5
6 InS PO93853 YTYEYD 6
(2)group_by(digest, gene)
行,现在remove行包含在另一个w$seq
中检测到的w$seq
(在该分组内),并保留w$seq
具有最多字符的行.
Output个
> w
digest gene seq count
1 InS AB0583 AAB 3 #* found within:
2 InS AB0583 AABKR 5 #*
3 InS AB0583 GFHGHGG 7
4 InS PO93853 HDGJ 4 #** found within:
5 InS PO93853 HDGJU 5 #**
6 InS PO93853 YTYEYD 6 #***
7 InS PO93853 SALGHAGGEE 10
8 InS PO93853 YTYEYDJHSGSG 12 #***
9 PAC PU83022 EUT 3 #****
10 PAC PU83022 EUTCK 5 #****
11 PAC PU83022 EUTCKJ 6 #****
12 PAC PU83022 HSFSFJF 7
因此,Expected output
> w
digest gene seq count
1 InS AB0583 AABKR 5
2 InS AB0583 GFHGHGG 7
3 InS PO93853 HDGJU 5
4 InS PO93853 SALGHAGGEE 10
5 InS PO93853 YTYEYDJHSGSG 12
6 PAC PU83022 EUTCKJ 6
7 PAC PU83022 HSFSFJF 7
Data个
w <- data.frame(
digest = c(rep("InS", 3), rep("PAC", 4), rep("InS", 5)),
gene = c(rep("AB0583", 3), rep("PU83022", 4), rep("PO93853", 5)),
seq = c("AAB", "AABKR", "GFHGHGG",
"EUT", "HSFSFJF", "EUTCK", "EUTCKJ",
"HDGJ", "HDGJU", "YTYEYD", "YTYEYDJHSGSG", "SALGHAGGEE")
)