首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用数据框中的数字将不同的值赋给字符串列表?

如何使用数据框中的数字将不同的值赋给字符串列表?
EN

Stack Overflow用户
提问于 2021-04-23 18:46:52
回答 2查看 12关注 0票数 0

我正在尝试通过将单一氨基酸的质量加在一起来分配多肽的质量。

例如,我有一个像下面这样的vactorlike:

代码语言:javascript
复制
c("AA", "AC", "AD" )

并且我有一个数据帧,每个字母都有值

代码语言:javascript
复制
symbol      mass
1       A  71.03711
2       D 115.02694
3       C 103.00919

如何计算"AA“、"AC”和"AD“的值,这些值应该将它们各自的质量值相加。例如,"AA“应为71.03711+71.03711=142.07422。我希望我的结果是这样的,并且可以导出为具有两列的csv文件:

代码语言:javascript
复制
peptide      mass
1       AA  142.07422
2       AC   174.0463
3       AD  186.06405
EN

回答 2

Stack Overflow用户

发布于 2021-04-23 18:51:48

如果数据帧被称为df,向量被称为peptide,你可以在peptide中拆分单个字符,用数据帧中的列对其进行match,得到相应的mass并对值进行sum。我们可以将结果放入数据帧中。

代码语言:javascript
复制
peptide <- c("AA", "AC", "AD" )
mass <- sapply(strsplit(vec, ''), function(x) sum(df$mass[match(x, df$symbol)]))
result <- data.frame(peptide, mass)
result

#  peptide     mass
#1      AA 142.0742
#2      AC 174.0463
#3      AD 186.0641
票数 0
EN

Stack Overflow用户

发布于 2021-04-23 18:52:26

你可以尝试一下tidyverse

代码语言:javascript
复制
library(tidyverse);
symbol <- c("AA", "AC", "AD" )
df <- read.table(text = "symbol      mass
1       A  71.03711
2       D 115.02694
3       C 103.00919")


tibble(symbol) %>% 
   rownames_to_column() %>% 
   separate_rows(symbol, sep="") %>% 
   inner_join(df) %>% 
   group_by(rowname) %>% 
   summarise(symbol = paste(symbol, collapse = ""),
             mass = sum(mass))
# A tibble: 3 x 3
  rowname symbol  mass
  <chr>   <chr>  <dbl>
1 1       AA      142.
2 2       AC      174.
3 3       AD      186.

tidyverse中使用包含的purrrmapreduce函数,您可以尝试一下

代码语言:javascript
复制
colSums(map(df$symbol,  ~str_count(symbol, .)) %>% reduce(rbind)*df$mass)
[1] 142.0742 174.0463 186.0641
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67228586

复制
相关文章

相似问题

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