我正在处理生物信息学数据,每行有一个基因,列有统计数据/元数据。有些基因来自同一生物体,用"id"栏表示,我将数据分组在这个变量上。
data <- data %>%
group_by(ID)
我想根据ID(分组因子)添加来自另一个文件的数据,因此ID = a的行应该具有来自名为a.gff的文件的数据,以此类推。我想添加的数据来自包含基因位置的.gff文件。有一个gff文件为ID=a,一个为ID=b,一个为ID=c等,根据ID命名(例如"a.gff")。
数据的样子:
我认为最简单的方法是先阅读所有的。人造石铺地面文件。我不熟悉的格式,所以我的例子将使用.csv扩展名。下面的代码读取"目录"中的所有文件目录作为列表列,然后将其解嵌,因此是一个常规的目录。
之后,您可以使用两个标题只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)