如何根据列标题是否与另一个表中的信息匹配将表拆分为多个新表?(R)

  • 本文关键字:拆分 新表 信息 标题 何根 是否 另一个 r
  • 更新时间 :
  • 英文 :


我有一个名为NE的表,其中包含剪接的RNA连接:

#Chr    start      end                               ID . + GTEX-Q2AG-0126-SM-2HMLB
1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA . +              0.01122552
2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA . +              0.09151192
3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA . +              0.94156107
4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA . +             -1.00545250
5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA . +             -0.17101732
6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA . +              0.26907797
GTEX-N7MT-0011-R5a-SM-2I3G6 GTEX-PW2O-0526-SM-2I3DX GTEX-OHPK-0526-SM-2HMJB
1:                 -0.73425796              0.32721133             -0.05645774
2:                  0.83044440             -0.08213476              0.23888779
3:                 -0.02207567             -1.68168241              1.69042151
4:                  0.16780741              1.55309040             -1.83313242
5:                 -0.96313998              0.96385901              0.40292406
6:                  1.00445387             -0.89044547             -0.24664686

我有另一个名为tissue_table的表,其中包含以下信息:

Run                 Sample_Name                          body_site
1: SRR598484     GTEX-PW2O-0526-SM-2I3DX                               Lung
2: SRR598124 GTEX-NPJ8-0011-R4a-SM-2HML3                   Brain - Amygdala
3: SRR599192 GTEX-N7MT-0011-R5a-SM-2I3G6    Brain - Caudate (basal ganglia)
4: SRR601925     GTEX-OHPK-0526-SM-2HMJB                               Lung
5: SRR601068     GTEX-Q2AG-0126-SM-2HMLB     Skin - Sun Exposed (Lower leg)
6: SRR602598 GTEX-Q2AG-0011-R9A-SM-2HMJ6 Brain - Spinal cord (cervical c-1)

我想做的是根据tissue_table$body_siteNE生成新表;这意味着,我希望与每种组织类型匹配的每一列的所有行都输出为文件。例如,如果GTEX-PW2O-0526-SM-2I3DXGTEX-OHPK-0526-SM-2HMJB都与tissue_table$body_site中的"Lung"匹配,我想创建一个名为 likeLungPhenotypes.txt的新表,看起来像NE(因为它有列#ChrstartendID),但只包含根据tissue_table从肺采样的信息。

这是我已有的代码:

require("data.table")
require("R.utils")
args = commandArgs(trailingOnly=TRUE)
# args[1] is the leafcutter-generated phenotypes, args[2] is the tissue table
NE <- fread("NE_sQTL_perind.counts.gz.qqnorm_chr13")
tistab <- fread("tissue_table.txt")
# below takes the SRR IDs found in NE column headers, matches them to those found in the
# tissue table, and then changes them the GTEX sample ID
ind <- match(names(NE), tistab$Run)
names(NE) <- tistab$Sample_Name[ind]
# I guess now what I want to do is find the tissue that corresponds to each sample, and write
# to file the phenotypes or whatever

这就是我所得到的:我能够将列标题从其原始标题(在tissue_table$Run中找到)更改为在tissue_table$Sample_Name中找到的标题。否则,我什至不知道我将如何处理这个问题。我相信这很容易,我只是对 R 不够熟悉而无法弄清楚。如果我能澄清我的问题,请告诉我。

谢谢。

编辑:根据要求,示例数据:

> dput(head(NE, 10))

structure(list(`#Chr` = c(13L, 13L, 13L, 13L, 13L, 13L, 13L, 
13L, 13L, 13L), start = c(20244503L, 20244503L, 20249124L, 20249793L, 
20251963L, 20283739L, 20803888L, 20803888L, 20803888L, 20804946L
), end = c(20244980L, 20245346L, 20251864L, 20251864L, 20304379L, 
20304379L, 20804837L, 20805005L, 20805521L, 20805521L), ID = c("13:20244503:20244980:clu_1587_NA", 
"13:20244503:20245346:clu_1587_NA", "13:20249124:20251864:clu_1588_NA", 
"13:20249793:20251864:clu_1588_NA", "13:20251963:20304379:clu_1589_NA", 
"13:20283739:20304379:clu_1589_NA", "13:20803888:20804837:clu_1590_NA", 
"13:20803888:20805005:clu_1590_NA", "13:20803888:20805521:clu_1590_NA", 
"13:20804946:20805521:clu_1590_NA"), . = c(".", ".", ".", ".", 
".", ".", ".", ".", ".", "."), `+` = c("+", "+", "+", "+", "+", 
"+", "+", "+", "+", "+"), `GTEX-Q2AG-0126-SM-2HMLB` = c(0.011225518662542, 
0.0915119165352026, 0.941561071760354, -1.00545250297076, -0.171017320204747, 
0.269077973405877, 2.26711789363315, -2.79253861638934, -0.732483471764967, 
1.14279009708336), `GTEX-N7MT-0011-R5a-SM-2I3G6` = c(-0.734257957140664, 
0.830444403564401, -0.0220756713815287, 0.167807411034554, -0.963139984748595, 
1.00445387270491, -1.10454772191492, 0.872446843686367, -1.47490517820283, 
-1.69929164403211), `GTEX-PW2O-0526-SM-2I3DX` = c(0.327211326349541, 
-0.0821347590368987, -1.68168241366976, 1.55309040177528, 0.963859014491135, 
-0.890445468211905, 0.126678936291309, 0.135493519239826, 0.126527048968275, 
0.14416639182154), `GTEX-OHPK-0526-SM-2HMJB` = c(-0.0564577430398568, 
0.238887789085513, 1.69042150820732, -1.83313242253239, 0.402924064571882, 
-0.246646862056526, 0.091360610412634, 0.0993070943580591, 0.0912093063816043, 
0.107562947531429), `GTEX-OXRL-0526-SM-2I3EZ` = c(0.0674782081460005, 
0.158645645285045, 1.78738099166716, -1.88842809909606, 0.508954892349862, 
-0.315945651353048, 0.119695085673777, 0.126982719708521, 0.119543328884529, 
0.134581189175627), `GTEX-NPJ8-0011-R4a-SM-2HML3` = c(-0.437321982565311, 
0.507754687799161, -0.150716233289565, 0.259715866743248, -1.25996459356113, 
1.18247794999203, -1.16864600399772, 0.315945651353048, -0.328801349819712, 
-1.23212889898317), `GTEX-Q2AG-0011-R9A-SM-2HMJ6` = c(-1.09599155148678, 
0.925486945143163, -0.404068240058415, 0.465014413370245, 0.0869736283894613, 
-0.0496678054798097, -0.151935513719884, -0.144927678233019, 
2.26125148845566, 0.321494053014199), `GTEX-OIZH-0005-SM-2HMJN` = c(2.00669264539791, 
-2.53139742741042, -1.17975392273608, 0.834065972618895, 1.47222782753213, 
-1.91886672909768, 0.530513153906467, 0.969147205230478, 0.37852951989621, 
1.19315578476064), `GTEX-Q2AG-0011-R4A-SM-2HMKA` = c(-0.375779231335771, 
0.446292587332684, -0.710978014218879, 0.662901557390466, -1.30771089265708, 
1.19715667858446, -0.747740836500599, 0.160171661041644, -0.487460943331342, 
-0.816486102660646), `GTEX-OXRK-0926-SM-2HMKP` = c(0.536071533897896, 
-0.32498668145395, 0.286146956081191, -0.058419751422225, 0.245249146196741, 
-0.0231306654644876, 0.134125066194346, 0.141045986021489, 0.133973031406055, 
0.147669008162181)), .Names = c("#Chr", "start", "end", "ID", 
".", "+", "GTEX-Q2AG-0126-SM-2HMLB", "GTEX-N7MT-0011-R5a-SM-2I3G6", 
"GTEX-PW2O-0526-SM-2I3DX", "GTEX-OHPK-0526-SM-2HMJB", "GTEX-OXRL-0526-SM-2I3EZ", 
"GTEX-NPJ8-0011-R4a-SM-2HML3", "GTEX-Q2AG-0011-R9A-SM-2HMJ6", 
"GTEX-OIZH-0005-SM-2HMJN", "GTEX-Q2AG-0011-R4A-SM-2HMKA", "GTEX-OXRK-0926-SM-2HMKP"
), class = c("data.table", "data.frame"), row.names = c(NA, -10L
), .internal.selfref = <pointer: 0x1fcb378>)

> dput(head(tistab, 10))

structure(list(Run = c("SRR598484", "SRR598124", "SRR599192", 
"SRR601925", "SRR601068", "SRR602598", "SRR607586", "SRR608288", 
"SRR600445", "SRR608344"), Sample_Name = c("GTEX-PW2O-0526-SM-2I3DX", 
"GTEX-NPJ8-0011-R4a-SM-2HML3", "GTEX-N7MT-0011-R5a-SM-2I3G6", 
"GTEX-OHPK-0526-SM-2HMJB", "GTEX-Q2AG-0126-SM-2HMLB", "GTEX-Q2AG-0011-R9A-SM-2HMJ6", 
"GTEX-OXRL-0526-SM-2I3EZ", "GTEX-OXRK-0926-SM-2HMKP", "GTEX-Q2AG-0011-R4A-SM-2HMKA", 
"GTEX-OIZH-0005-SM-2HMJN"), body_site = c("Lung", "Brain - Amygdala", 
"Brain - Caudate (basal ganglia)", "Lung", "Skin - Sun Exposed (Lower leg)", 
"Brain - Spinal cord (cervical c-1)", "Lung", "Lung", "Brain - Amygdala", 
"Whole Blood")), .Names = c("Run", "Sample_Name", "body_site"
), class = c("data.table", "data.frame"), row.names = c(NA, -10L
), .internal.selfref = <pointer: 0x1fcb378>)

如果你按body_sitesplitSample_Name,你会得到对应于每个body_siteSample_Names 向量。然后,您只需要使用每个body_siteNE名称intersect,然后选择由该交集生成的列。结果是数据表的命名列表。名称是body_site值。

library(data.table) #not really necessary, just using it here since you're already using it
sites <- with(tistab, split(Sample_Name, body_site))
keep <- c('#Chr', 'start', 'end', 'ID')
lapply(sites, function(x) 
NE[, .SD, .SDcols = c(keep, intersect(names(NE), x))])

lapply 代码使用lapply中定义的函数。这有时称为使用"匿名"函数。对于数据表,.SD是所有列的数据表,或者除分组列(如果使用分组)或.SDcols中指定的列(如果使用.SDcols参数)之外的所有列的数据表。所以我只是用它来选择特定的列。

使用常规数据框,您可以执行NE[, c(keep, intersect(names(NE), x))],但是由于data.table处理括号内内容的方式,这将给出奇怪的结果(尝试使用data.table,然后使用常规数据框NE[, names(NE)[1:2]],以了解我的意思)。

打印输出

# $`Brain - Amygdala`
#     #Chr    start      end                               ID GTEX-NPJ8-0011-R4a-SM-2HML3
#  1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA                  -0.4373220
#  2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA                   0.5077547
#  3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA                  -0.1507162
#  4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA                   0.2597159
#  5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA                  -1.2599646
#  6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA                   1.1824779
#  7:   13 20803888 20804837 13:20803888:20804837:clu_1590_NA                  -1.1686460
#  8:   13 20803888 20805005 13:20803888:20805005:clu_1590_NA                   0.3159457
#  9:   13 20803888 20805521 13:20803888:20805521:clu_1590_NA                  -0.3288013
# 10:   13 20804946 20805521 13:20804946:20805521:clu_1590_NA                  -1.2321289
#     GTEX-Q2AG-0011-R4A-SM-2HMKA
#  1:                  -0.3757792
#  2:                   0.4462926
#  3:                  -0.7109780
#  4:                   0.6629016
#  5:                  -1.3077109
#  6:                   1.1971567
#  7:                  -0.7477408
#  8:                   0.1601717
#  9:                  -0.4874609
# 10:                  -0.8164861
# 
# $`Brain - Caudate (basal ganglia)`
#     #Chr    start      end                               ID GTEX-N7MT-0011-R5a-SM-2I3G6
#  1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA                 -0.73425796
#  2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA                  0.83044440
#  3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA                 -0.02207567
#  4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA                  0.16780741
#  5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA                 -0.96313998
#  6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA                  1.00445387
#  7:   13 20803888 20804837 13:20803888:20804837:clu_1590_NA                 -1.10454772
#  8:   13 20803888 20805005 13:20803888:20805005:clu_1590_NA                  0.87244684
#  9:   13 20803888 20805521 13:20803888:20805521:clu_1590_NA                 -1.47490518
# 10:   13 20804946 20805521 13:20804946:20805521:clu_1590_NA                 -1.69929164
# 
# $`Brain - Spinal cord (cervical c-1)`
#     #Chr    start      end                               ID GTEX-Q2AG-0011-R9A-SM-2HMJ6
#  1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA                 -1.09599155
#  2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA                  0.92548695
#  3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA                 -0.40406824
#  4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA                  0.46501441
#  5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA                  0.08697363
#  6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA                 -0.04966781
#  7:   13 20803888 20804837 13:20803888:20804837:clu_1590_NA                 -0.15193551
#  8:   13 20803888 20805005 13:20803888:20805005:clu_1590_NA                 -0.14492768
#  9:   13 20803888 20805521 13:20803888:20805521:clu_1590_NA                  2.26125149
# 10:   13 20804946 20805521 13:20804946:20805521:clu_1590_NA                  0.32149405
# 
# $Lung
#     #Chr    start      end                               ID GTEX-PW2O-0526-SM-2I3DX
#  1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA              0.32721133
#  2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA             -0.08213476
#  3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA             -1.68168241
#  4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA              1.55309040
#  5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA              0.96385901
#  6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA             -0.89044547
#  7:   13 20803888 20804837 13:20803888:20804837:clu_1590_NA              0.12667894
#  8:   13 20803888 20805005 13:20803888:20805005:clu_1590_NA              0.13549352
#  9:   13 20803888 20805521 13:20803888:20805521:clu_1590_NA              0.12652705
# 10:   13 20804946 20805521 13:20804946:20805521:clu_1590_NA              0.14416639
#     GTEX-OHPK-0526-SM-2HMJB GTEX-OXRL-0526-SM-2I3EZ GTEX-OXRK-0926-SM-2HMKP
#  1:             -0.05645774              0.06747821              0.53607153
#  2:              0.23888779              0.15864565             -0.32498668
#  3:              1.69042151              1.78738099              0.28614696
#  4:             -1.83313242             -1.88842810             -0.05841975
#  5:              0.40292406              0.50895489              0.24524915
#  6:             -0.24664686             -0.31594565             -0.02313067
#  7:              0.09136061              0.11969509              0.13412507
#  8:              0.09930709              0.12698272              0.14104599
#  9:              0.09120931              0.11954333              0.13397303
# 10:              0.10756295              0.13458119              0.14766901
# 
# $`Skin - Sun Exposed (Lower leg)`
#     #Chr    start      end                               ID GTEX-Q2AG-0126-SM-2HMLB
#  1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA              0.01122552
#  2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA              0.09151192
#  3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA              0.94156107
#  4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA             -1.00545250
#  5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA             -0.17101732
#  6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA              0.26907797
#  7:   13 20803888 20804837 13:20803888:20804837:clu_1590_NA              2.26711789
#  8:   13 20803888 20805005 13:20803888:20805005:clu_1590_NA             -2.79253862
#  9:   13 20803888 20805521 13:20803888:20805521:clu_1590_NA             -0.73248347
# 10:   13 20804946 20805521 13:20804946:20805521:clu_1590_NA              1.14279010
# 
# $`Whole Blood`
#     #Chr    start      end                               ID GTEX-OIZH-0005-SM-2HMJN
#  1:   13 20244503 20244980 13:20244503:20244980:clu_1587_NA               2.0066926
#  2:   13 20244503 20245346 13:20244503:20245346:clu_1587_NA              -2.5313974
#  3:   13 20249124 20251864 13:20249124:20251864:clu_1588_NA              -1.1797539
#  4:   13 20249793 20251864 13:20249793:20251864:clu_1588_NA               0.8340660
#  5:   13 20251963 20304379 13:20251963:20304379:clu_1589_NA               1.4722278
#  6:   13 20283739 20304379 13:20283739:20304379:clu_1589_NA              -1.9188667
#  7:   13 20803888 20804837 13:20803888:20804837:clu_1590_NA               0.5305132
#  8:   13 20803888 20805005 13:20803888:20805005:clu_1590_NA               0.9691472
#  9:   13 20803888 20805521 13:20803888:20805521:clu_1590_NA               0.3785295
# 10:   13 20804946 20805521 13:20804946:20805521:clu_1590_NA               1.1931558

最新更新