我有几个数据框(txt 文件),具有相同的列数(20),但行数不同。 例如, 尺寸11770x20
基因_Id | Chr | 开始 | 结束 | 长度 | 阅读 | TPM | 外显子长度 | 外显子阅读 | 外显子TPM |
---|---|---|---|---|---|---|---|---|---|
LOC117243535 | NW_022882922.1 | 58793 | 59875 | 1083 | 8 | 0.510339 | 1083 | 8 | 0.289397 |
LOC117243589 | NW_022882922.1 | 60266 | 61228 | 963 | 12 | 0.860899 | 614 | 6 | 0.382839 |
LOC117243573 | NW_022882922.1 | 75178 | 81169 | 5992 | 41 | 0.472726 | 1051 | 31 | 1.15556 |
LOC117243530 | NW_022882922.1 | 82581 | 87265 | 4685 | 3073 | 45.3158 | 3696 | 3067 | 32.5099 |
LOC117243513 | NW_022882922.1 | 87408 | 92509 | 5102 | 1972 | 26.7032 | 3895 | 1957 | 19.6841 |
LOC117243540 | NW_022882922.1 | 92501 | 93993 | 1493 | 817 | 37.8059 | 1386 | 816 | 23.0654 |
LOC117243522 | NW_022882922.1 | 94375 | 99883 | 5509 | 9133 | 114.535 | 3477 | 9068 | 102.174 |
尺寸11683x20
基因_Id | Chr | 开始 | 结束 | 长度 | 阅读 | TPM | 外显子长度 | 外显子阅读 | 外显子TPM |
---|---|---|---|---|---|---|---|---|---|
LOC117243535 | NW_022882922.1 | 58793 | 59875 | 1083 | 5 | 0.294678 | 1083 | 5 | 0.197168 |
LOC117243589 | NW_022882922.1 | 60266 | 61228 | 963 | 13 | 0.861636 | 614 | 7 | 0.486882 |
LOC117243573 | NW_022882922.1 | 75178 | 81169 | 5992 | 23 | 0.244998 | 1051 | 7 | 0.284439 |
LOC117243530 | NW_022882922.1 | 82581 | 87265 | 4685 | 3012 | 41.0348 | 3696 | 2981 | 34.4448 |
LOC117243513 | NW_022882922.1 | 87408 | 92509 | 5102 | 1565 | 19.5786 | 3895 | 1554 | 17.0388 |
LOC117243540 | NW_022882922.1 | 92501 | 93993 | 1493 | 647 | 27.6599 | 1386 | 644 | 19.8434 |
LOC117243522 | NW_022882922.1 | 94375 | 99883 | 5509 | 7499 | 86.8835 | 3477 | 7455 | 91.5666 |
LOC117234422 | NW_022882922.1 | 101930 | 108153 | 6224 | 459 | 4.70706 | 3120 | 423 | 5.79002 |
LOC117234352 | NW_022882922.1 | 108188 | 113107 | 4920 | 355 | 4.60543 | 3325 | 350 | 4.49542 |
LOC117230168 | NW_022882922.1 | 114666 | 128596 | 13931 | 1666 | 7.63308 | 3119 | 1534 | 21.0041 |
LOC117230189 | NW_022882922.1 | 128634 | 131497 | 2864 | 409 | 9.11501 | 2001 | 401 | 8.55838 |
LOC117230196 | NW_022882922.1 | 131822 | 137028 | 5207 | 5569 | 68.2648 | 2303 | 5539 | 102.714 |
我想循环遍历所有 txt 文件并合并所有 TPM 列以创建数据框/矩阵,但我的问题/问题是每个数据框/txt 文件具有不同的行数,因此,可能会存在一些行在文件 A 中但在文件 B 中缺失,反之亦然。 因此,我需要使用 Gene_Id 正确匹配行。
谢谢;
我考虑过使用 dplyr 或 tidyverse,但我不确定如何确保行正确匹配,因此矩阵/数据框不会混乱。
当所有 txt 文件合并后,尚不清楚您打算如何使用数据,因此这个答案可能不是格式化数据的最佳方法。但是,根据您的描述,此代码将通过 Gene_Id 连接/合并您的所有 txt 文件,无论行数如何。
对于此示例,我使用示例数据创建了制表符分隔的 txt 文件,并将它们保存在我的工作目录中名为“data”的文件夹中。如果您不属于这种情况,您将需要修改代码。
重复的列名将附加一个后缀,以确保列名是唯一的,并且文件将按照它们在“文件”列表中出现的顺序进行连接。换句话说,您可以在每次后缀更改时跟踪原始 txt 文件。
library(dplyr)
# Create list of txt files from folder (e.g. "data" folder in working directory)
files <- list.files("data/",
pattern="*.txt$",
full.names = TRUE)
files
# [1] "data/flie_a.txt" "data/flie_b.txt"
# Load all txt files as tables in a list
dfs <- lapply(files, read.table, header = TRUE, sep = "\t")
# Combine all objects in dfs
df_all <- Reduce(function(x, y) full_join(x, y, by = "Gene_Id"), dfs)
df_all
# Gene_Id Chr.x Start.x End.x Length.x Reads.x TPM.x ExonLength.x ExonReads.x ExonTPM.x Chr.y Start.y End.y Length.y Reads.y TPM.y ExonLength.y ExonReads.y ExonTPM.y
# 1 LOC117243535 NW_022882922.1 58793 59875 1083 8 0.510339 1083 8 0.289397 NW_022882922.1 58793 59875 1083 5 0.294678 1083 5 0.197168
# 2 LOC117243589 NW_022882922.1 60266 61228 963 12 0.860899 614 6 0.382839 NW_022882922.1 60266 61228 963 13 0.861636 614 7 0.486882
# 3 LOC117243573 NW_022882922.1 75178 81169 5992 41 0.472726 1051 31 1.155560 NW_022882922.1 75178 81169 5992 23 0.244998 1051 7 0.284439
# 4 LOC117243530 NW_022882922.1 82581 87265 4685 3073 45.315800 3696 3067 32.509900 NW_022882922.1 82581 87265 4685 3012 41.034800 3696 2981 34.444800
# 5 LOC117243513 NW_022882922.1 87408 92509 5102 1972 26.703200 3895 1957 19.684100 NW_022882922.1 87408 92509 5102 1565 19.578600 3895 1554 17.038800
# 6 LOC117243540 NW_022882922.1 92501 93993 1493 817 37.805900 1386 816 23.065400 NW_022882922.1 92501 93993 1493 647 27.659900 1386 644 19.843400
# 7 LOC117243522 NW_022882922.1 94375 99883 5509 9133 114.535000 3477 9068 102.174000 NW_022882922.1 94375 99883 5509 7499 86.883500 3477 7455 91.566600
# 8 LOC117234422 <NA> NA NA NA NA NA NA NA NA NW_022882922.1 101930 108153 6224 459 4.707060 3120 423 5.790020
# 9 LOC117234352 <NA> NA NA NA NA NA NA NA NA NW_022882922.1 108188 113107 4920 355 4.605430 3325 350 4.495420
# 10 LOC117230168 <NA> NA NA NA NA NA NA NA NA NW_022882922.1 114666 128596 13931 1666 7.633080 3119 1534 21.004100
# 11 LOC117230189 <NA> NA NA NA NA NA NA NA NA NW_022882922.1 128634 131497 2864 409 9.115010 2001 401 8.558380
# 12 LOC117230196 <NA> NA NA NA NA NA NA NA NA NW_022882922.1 131822 137028 5207 5569 68.264800 2303 5539 102.714000