Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据data.frame的分组计算统计信息_R_Dplyr_Plyr - Fatal编程技术网

根据data.frame的分组计算统计信息

根据data.frame的分组计算统计信息,r,dplyr,plyr,R,Dplyr,Plyr,我有以下data.frame,我想计算一些统计数据: gene_symbol signal_window signal_score MEF_chRNA ES_chRNA signal_dist_to_gene 262764 GOT1 218220 0.08 0.2696089 0.3356937140 44805 403001 NKX2 218220 0.08

我有以下data.frame,我想计算一些统计数据:

       gene_symbol signal_window signal_score MEF_chRNA     ES_chRNA signal_dist_to_gene
262764        GOT1        218220         0.08 0.2696089 0.3356937140               44805
403001        NKX2        218220         0.08 0.0000000 0.0008852885               42915
262630        GOT1        218221         0.08 0.2696089 0.3356937140               45005
403039        NKX2        218221         0.08 0.0000000 0.0008852885               42715
262793        GOT1        218222         0.00 0.2696089 0.3356937140               45205
402663        NKX2        218222         0.00 0.0000000 0.0008852885               42515
262867        GOT1        218223         0.16 0.2696089 0.3356937140               45405
402737        NKX2        218223         0.16 0.0000000 0.0008852885               42315
262677        GOT1        218224         0.16 0.2696089 0.3356937140               45605
403006        NKX2        218224         0.16 0.0000000 0.0008852885               42115
262858        GOT1        218225         0.16 0.2696089 0.3356937140               45805
402953        NKX2        218225         0.16 0.0000000 0.0008852885               41915
如示例data.frame所示,对于每个
信号窗口
,可以有多个
基因符号
值。现在,对于每个
signal\u窗口中的每个
gene\u符号
,我想计算
1/signal\u到基因的距离
。我想使用此值计算每个
信号窗口中每个
基因符号的每个
1/信号距离到基因的总和

例如,窗口218220有两个基因。对于我要计算的每个基因:

gene_weight_GOT1 = (1/signal_dist_to_gene_GOT1) / (1/signal_dist_to_gene_GOT1 + 1/signal_dist_to_gene_NKX2)
gene_weight_NKX2 = (1/signal_dist_to_gene_NKX2) / (1/signal_dist_to_gene_GOT1 + 1/signal_dist_to_gene_NKX2)
我最终想使用这些
基因权重
变量来计算:

MEF_prop = [MEF_chRNA_GOT1 * gene_weight_GOT1 * 1/2 + MEF_chRNA_NKX2 * gene_weight_NKX2 * 1/2] / [gene_weight_GOT1 * (MEF_chRNA_GOT1/2 + ES_chRNA_GOT1/2) + gene_weight_NKX2 * (MEF_chRNA_NKX2/2 + ES_chRNA_NKX2/2)]

在同一个窗口中总是有两个基因,这是不可能的。有些情况下没有基因(NA),有些情况下有20+基因是否有一种使用plyr或dplyr计算的简单方法?

应该这样做。首先,我们按信号_窗口分组,然后根据指定计算权重。分母中的
通过组(信号窗口)计算

标准语法
data.df%>%groupby()%>%mutate()
对于您正在尝试的内容来说应该非常简单

您的代码可能最终看起来像这样:

data.df %>% 
group_by(signal_window, gene_symbol) %>% 
mutate(gene_weight = (1/signal_dist_to_gene) / sum(1/signal_dist_to_gene)) %>%
mutate(MEF_prop = (MEF_chRNA * gene_weight * 1/2 + MEF_chRNA * gene_weight * 1/2) / (gene_weight * (MEF_chRNA/2 + ES_chRNA/2) + gene_weight * (MEF_chRNA/2 + ES_chRNA/2)))
如果希望在
信号窗口中对每个重复符号进行唯一处理,则可以从
分组依据中删除
基因符号
,或者如果希望将其分组,则将其保留在该窗口中

这就是你想要的吗

data.df %>% 
group_by(signal_window, gene_symbol) %>% 
mutate(gene_weight = (1/signal_dist_to_gene) / sum(1/signal_dist_to_gene)) %>%
mutate(MEF_prop = (MEF_chRNA * gene_weight * 1/2 + MEF_chRNA * gene_weight * 1/2) / (gene_weight * (MEF_chRNA/2 + ES_chRNA/2) + gene_weight * (MEF_chRNA/2 + ES_chRNA/2)))