首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-根据同一行中的字符串修改值列

R-根据同一行中的字符串修改值列
EN

Stack Overflow用户
提问于 2020-05-05 11:22:31
回答 1查看 49关注 0票数 0

我对R非常陌生,很抱歉用这样一个简单的问题来打扰你。

我有一个大的数据框架(完整的数据框架有25列,几百万行),包含肽光谱库的信息(参见下面的示例)。

我正在通过将它们的缩写(UniMod:XXX)写入肽序列(PeptideSequence)来向基库中引入修改。我所剩下的就是根据我的修饰和电荷(PrecursorCharge)的发生来更新肽质量(PrecursorCharge)。因此,对于每个"(UniMod:259)“部分字符串,我必须将相应的质量增加8 (UniMod:267),除以电荷(电荷并不总是3,对不起)。例如,修改后的第一行应在对序列中的修改进行因子分解后读取714.64876。

PrecursorMz PeptideSequence PrecursorCharge 709.31543 AAAEK(UniMod:259)LFGNMEGDCPSDWK(UniMod:259) 3 709.31543 AAAEKLFGNMEGDCPSDWK(UniMod:259) 3 529.58044 AK(UniMod:259)LWCSTTADYDR(UniMod:267) 3

非常感谢,并将提供和补充您可能需要的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-05 11:43:55

使用来自stringr::str_countstringr (tidyverse的一部分)

代码语言:javascript
复制
library(tidyverse)

df %>%
map_if(is.factor, as.character) %>%
  mutate(
    PrecursorMz = PrecursorMz + (
      8 * str_count(PeptideSequence, "UniMod:259") + 10 * str_count(PeptideSequence, "UniMod:267")
    ) / PrecursorCharge,
    PrecursorMz = format(round(PrecursorMz, 5), nsmall = 5)
  )
# A tibble: 3 x 3
  PrecursorMz PeptideSequence                             PrecursorCharge
  <chr>       <chr>                                                 <dbl>
1 714.64876   AAAEK(UniMod:259)LFGNMEGDCPSDWK(UniMod:259)               3
2 711.98210   AAAEKLFGNMEGDCPSDWK(UniMod:259)                           3
3 535.58044   AK(UniMod:259)LWCSTTADYDR(UniMod:267)                     3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61611955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档