如何使用 dplyr 到 group_by() 来折叠子系列

感谢您的帮助!我不是 R 专家,但有一些使用它的经验,我有一个我想弄清楚的难题。在这种情况下,我正在运行模拟以创建事件的子系列:

# A tibble: 20 x 3
   GeneID  counts       Freq
   <fct>    <int>      <dbl>
 1 1.1          3 0.0000132 
 2 1.2          4 0.0000176 
 3 1.3          5 0.0000220 
 4 1.4          2 0.00000880
 5 10.1         1 0.00000440
 6 10.2         4 0.0000176 
 7 10.3         1 0.00000440
 8 10.4         2 0.00000880
 9 10.5         3 0.0000132 
10 100.1        5 0.0000220 
11 100.2        5 0.0000220 
12 100.3        2 0.00000880
13 100.4        2 0.00000880
14 100.5        2 0.00000880

在 GeneID 中,我有 1.1、1.2、1.3 和 1.4,它们是 Gene 1 的变体(其他原理相同)。是否可以使用 dplyr 中的 group_by 将变体折叠为单个组?IE。1.1 1.2 1.3 1.4 分组为 1 并对相关计数求和(以此类推)?

我想过使用 trunc() 创建另一列来删除小数,但这些数据集可能非常大....

先感谢您。

罗纳克·沙阿

您走在正确的轨道上,您可以通过删除"."in之后的所有内容来创建一个新列GeneIDsum为每个唯一值取值。

library(dplyr)

df %>%
  group_by(Gene_group = sub('\\..*', '', GeneID)) %>%
  summarise(Freq = sum(Freq))

# Gene_group      Freq
#  <chr>          <dbl>
#1 1          0.0000616
#2 10         0.0000484
#3 100        0.0000704

如果你的数据集很大并且你担心性能,你也可以使用上面的data.table方法。

library(data.table)
setDT(df)[, Gene_group := sub('\\..*', '', GeneID)]
df[, sum(Freq), Gene_group]

数据

df <- structure(list(GeneID = c(1.1, 1.2, 1.3, 1.4, 10.1, 10.2, 10.3, 
10.4, 10.5, 100.1, 100.2, 100.3, 100.4, 100.5), counts = c(3L, 
4L, 5L, 2L, 1L, 4L, 1L, 2L, 3L, 5L, 5L, 2L, 2L, 2L), Freq = c(1.32e-05, 
1.76e-05, 2.2e-05, 8.8e-06, 4.4e-06, 1.76e-05, 4.4e-06, 8.8e-06, 
1.32e-05, 2.2e-05, 2.2e-05, 8.8e-06, 8.8e-06, 8.8e-06)), 
class = "data.frame", row.names = c(NA, -14L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试使用dplyr来group_by并应用scale()

使用dplyr计数group_by中的子组

r dplyr group_by值折叠并粘贴

在dplyr中使用group_by时处理缺少的字符串值到函数

使用嵌套 group_by 时 dplyr 出错

然后使用dplyr过滤Group_by

在函数中使用dplyr的问题(group_by)

使用dplyr的group_by的na.locf

在函数中使用dplyr group_by

R dplyr使用group_by的条件突变

使用 dplyr、group_by 和折叠或汇总连接字符串/行,但保持 NA 值

R dplyr或purrr group_by到载体列表

使用`rle`函数和`dplyr``group_by`命令来映射分组变量

如何在函数中使用dplyr :: group_by

如何在 dplyr 的 group_by 上使用 if/ifelse

如何使用 dplyr 的 coalesce 函数和 group_by() 来为每人创建一行并填写所有值?

R Dplyr group_by

使用dplyr group_by时将汇总条件应用于一系列列吗?

dplyr group_by和mutate,如何访问数据帧?

如何在dplyr中调用几个变量到group_by

R-在dplyr中使用group_by()和mutate()来应用函数,该向量返回组长度的向量

在dplyr的group_by中使用过滤器的问题

R dplyr:在group_by之后使用init的Reduce进行突变

dplyr group_by并使用非标准评估进行汇总

group_by并使用dplyr基于窗口应用滚动回归

使用dplyr :: group_by()查找带有NA的最小日期

使用dplyr的group_by执行split-apply-combine

在dplyr中使用group_by()的地方保留重复的条目

使用dplyr :: group_by()对每个组进行黄土回归