0

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

data <- data %>%
  group_by(ID)

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

数据是什么样子的:

基因 ID
赛拉 一个
细胞 一个
Atl b
prT 一个
胡尔 C

有没有办法实现为每个 ID 分组打开文件、执行操作并移动到下一个 ID 的功能?

我对 R 很陌生,非常感谢任何帮助!

4

1 回答 1

1

我认为最简单的方法是首先阅读所有.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)
于 2021-03-02T12:56:14.893 回答