首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用for循环根据前列条件组合列值

在R中使用for循环根据前列条件组合列值
EN

Stack Overflow用户
提问于 2022-05-12 08:45:58
回答 1查看 31关注 0票数 0

我正在处理一个大的数据集,对某个基因进行多个观察,在不同的日期和不同的表达水平上。所用数据

我想把所有的“表达式”列值之和到

  1. 它们属于同一个基因(列‘基因’i=列‘基因’i+1‘)

  1. 它们是在同一日期测量的(列' date‘i= column 'date’i+1)

输出应该是这样的(每个基因每个日期应该有一个观察,即该基因在那个日期的所有表达水平之和):输出

我试着做了一个for循环,但是我对R相对来说还是比较新的,并且在创建循环中的数据时遇到了困难。另一种解决办法可能更好。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-05-13 08:02:25

“大”有多大?如果您确实有一个大型数据集,那么您是----更好的是使用data.table

下面是一个10毫米行的例子。

代码语言:javascript
复制
#   made up example: YOU should provide this
#
set.seed(1)    # for reproducible example
df <- data.frame(gene=sample(1:1e6, 1e7, replace=TRUE), 
                 expression=rpois(1e7, 5), 
                 date=sample(43000:44000, 1e7, replace=TRUE))
##
#
library(tictoc)       # for timing functions
library(dplyr)
library(data.table)
##
#
tic()
result.1 <- df %>% group_by(gene, date) %>% summarise(expression = sum(expression))
toc()
## 40.83 sec elapsed
##
#
tic()
result.2 <- setDT(df)[, .(expression=sum(expression)), keyby=.(gene, date)]
toc()
## 3.03 sec elapsed

所以在这个例子中,data.table的速度要快13倍。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72212549

复制
相关文章

相似问题

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