基于组将数据添加到数据框

Adding data to a dataframe based on groups

我正在处理生物信息学数据,每行有一个基因,列有 statistics/metadata。一些基因来自同一个生物体,由“ID”列指示,我将数据分组到这个变量上。

data <- data %>%
  group_by(ID)

我想根据 ID(分组因子)添加来自另一个文件的数据,以便 ID = a 的行应该包含来自名为 a.gff 的文件的数据,依此类推。我想添加的数据来自包含基因位置的 .gff 文件。有一个ID=a的gff文件,一个ID=b的,一个ID=c的,等等,根据ID命名(例如“a.gff”)。

数据是什么样的:

Gene ID
CelA a
CelB a
Atl b
prT a
HUl c

有没有办法实现一个功能,每个ID分组打开一个文件,做一个操作,然后移动到下一个ID?

我是 R 的新手,非常感谢任何帮助!

我认为最简单的方法是首先阅读所有 .gff 文件。我不熟悉这种格式,所以我的示例将使用 .csv 扩展名。以下代码读取“dir”目录中的所有文件作为列表列,然后将其取消嵌套,因此是一个常规的 tibble。

之后,您可以 left_join() 使用两个小标题,然后按 ID 分组。

library(tidyverse)

binded <- tibble(
    file = list.files("dir"), # can remove before the join
    location = list.files("dir", full.names = TRUE), # can remove before the join
    ID = str_remove(file, "\.csv"),
    df = map(location, read_csv)
) %>% 
    unnest(df)

data %>% 
    left_join(binded)