[英]Adding data to a dataframe based on groups
我正在處理生物信息學數據,每行都有一個基因,列中有統計信息/元數據。 一些基因來自同一生物體,由“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 |
有沒有辦法實現 function 為每個 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.