首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tapply生成数据子集的方差

使用tapply生成数据子集的方差
EN

Stack Overflow用户
提问于 2018-03-20 13:54:42
回答 2查看 1.1K关注 0票数 0

我列出了每个基因的1-3个探针,以及每个探针的强度值。一个例子如下:

代码语言:javascript
复制
GENE_ID             Probes                  Intensity 
GENE:JGI_V11_100009 GENE:JGI_V11_1000090102 253.479375
GENE:JGI_V11_100009 GENE:JGI_V11_1000090202 712.235625
GENE:JGI_V11_100036 GENE:JGI_V11_1000360103 449.065625
GENE:JGI_V11_100036 GENE:JGI_V11_1000360203 641.341875
GENE:JGI_V11_100036 GENE:JGI_V11_1000360303 1237.07125
GENE:JGI_V11_100044 GENE:JGI_V11_1000440101 456.133125
GENE:JGI_V11_100045 GENE:JGI_V11_1000450101 369.790625
GENE:JGI_V11_100062 GENE:JGI_V11_1000620102 2839.97375
GENE:JGI_V11_100062 GENE:JGI_V11_1000620202 6384.55125

我想确定每个基因的探针之间的差异(因此,对于每个基因,我有一个方差值)。

我知道我应该使用tapply()函数,但除了以下之外,我不知道如何实现这一点:

代码语言:javascript
复制
tapply( , , var)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-20 13:59:09

您可以使用data.tabledplyr来完成这一任务。这是一个典型的group_by案例:

代码语言:javascript
复制
library(dplyr)
df %>% 
    group_by(GENE_ID) %>% 
    mutate(new_var = var(Intensity))


library(data.table)
setDT(df)
df[, new_var := var(Intensity), .(GENE_ID)]

这两种情况下的输出都是:

代码语言:javascript
复制
               GENE_ID                  Probes Intensity   new_var
1: GENE:JGI_V11_100009 GENE:JGI_V11_1000090102  253.4794  105228.6
2: GENE:JGI_V11_100009 GENE:JGI_V11_1000090202  712.2356  105228.6
3: GENE:JGI_V11_100036 GENE:JGI_V11_1000360103  449.0656  168802.8
4: GENE:JGI_V11_100036 GENE:JGI_V11_1000360203  641.3419  168802.8
5: GENE:JGI_V11_100036 GENE:JGI_V11_1000360303 1237.0712  168802.8
6: GENE:JGI_V11_100044 GENE:JGI_V11_1000440101  456.1331        NA
7: GENE:JGI_V11_100045 GENE:JGI_V11_1000450101  369.7906        NA
8: GENE:JGI_V11_100062 GENE:JGI_V11_1000620102 2839.9738 6282014.8
9: GENE:JGI_V11_100062 GENE:JGI_V11_1000620202 6384.5513 6282014.8
票数 0
EN

Stack Overflow用户

发布于 2018-03-20 14:22:52

这是基R中典型的ave情况,而tapply返回的向量长度与分组因子的唯一值相同,ave返回具有相同数据帧/矩阵列向量长度的分组平均值(或其他聚合)(必要时由组重复值):

代码语言:javascript
复制
gene_df$Probes_var <- ave(gene_df$Intensity, gene_df$GENE_ID, FUN=var)
gene_df

#               GENE_ID                  Probes Intensity Probes_var
# 1 GENE:JGI_V11_100009 GENE:JGI_V11_1000090102  253.4794   105228.6
# 2 GENE:JGI_V11_100009 GENE:JGI_V11_1000090202  712.2356   105228.6
# 3 GENE:JGI_V11_100036 GENE:JGI_V11_1000360103  449.0656   168802.8
# 4 GENE:JGI_V11_100036 GENE:JGI_V11_1000360203  641.3419   168802.8
# 5 GENE:JGI_V11_100036 GENE:JGI_V11_1000360303 1237.0712   168802.8
# 6 GENE:JGI_V11_100044 GENE:JGI_V11_1000440101  456.1331         NA
# 7 GENE:JGI_V11_100045 GENE:JGI_V11_1000450101  369.7906         NA
# 8 GENE:JGI_V11_100062 GENE:JGI_V11_1000620102 2839.9738  6282014.8
# 9 GENE:JGI_V11_100062 GENE:JGI_V11_1000620202 6384.5513  6282014.8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49386156

复制
相关文章

相似问题

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