基于组将数据添加到数据框
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)
我正在处理生物信息学数据,每行有一个基因,列有 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)