识别两个数据框中相同的列并将其提取到r中

kjthegm6  于 2023-02-06  发布在  其他
关注(0)|答案(4)|浏览(175)

我有两个 Dataframe ;mRNAhere)和RPPAhere)。mRNA数据框有1,212列,而RPPA数据框有937列。RPPA数据框中的所有列名也会出现在mRNA数据框中(但顺序不同)。在列内,两个数据框之间的值不同。
我想创建一个new mRNA数据框,它将包含与RPPA数据框相同的列,并且不会包含("旧")mRNA数据框中未出现的列。
举个例子:

mRNA <- data.frame(A=c(25,76,23,45), B=c(56,89,12,452), C=c(45,456,243,5), D=c(13,65,23,16), E=c(17:20), F=c(256,34,0,5))  
RPPA <- data.frame(B=c(46,47,45,49), A=c(51,87,34,87), D=c(76,34,98,23))

预期结果将是:

> new.mRNA
B     A     D
56    25    13
89    76    65
12    23    23
452   45    16

我尝试过将RPPA列名转换为向量,然后将其与命令mRNA[col.names.vector]一起使用,如here所述,但它不起作用。它给出错误undefined columns selected
有没有一个快速的方法来做到这一点(没有函数,循环等)?

e5njpo68

e5njpo681#

这两个答案对我的数据都不起作用。多亏了这两个答案,再加上一点研究,我找到了答案:**首先,**需要生成一个向量,它只包含出现在两个数据框中的列名,为此我使用了命令intersectReduce

target <- Reduce(intersect, list(colnames(raw.mRNA), colnames(RPPA)))

现在你可以使用给出的答案:

new.mRNA <- mRNA[target]

并且这将产生具有正确值的新 Dataframe 。
感谢@akrun和@Titolondon的帮助

hiz5n14c

hiz5n14c2#

您可以按照下面的代码在两个数据框中找到不同的列。

col_name=colnames(mRNA[which(!(colnames(mRNA) %in% colnames(RPPA)))])

new_mRNA=mRNA %>% select(-col_name)
soat7uwm

soat7uwm3#

我们可以通过列名“RPPA”将mRNA划分为子集,并将其分配给“RPPA”

RPPA[] <- mRNA[names(RPPA)]
bwntbbo3

bwntbbo34#

带有向量的 Dataframe 的子集应该有功。
1.创建要保留的列名的向量
1.使用此向量子集化 Dataframe

mRNA <- data.frame(A=c(25,76,23,45), B=c(56,89,12,452), C=c(45,456,243,5), D=c(13,65,23,16), E=c(17:20), F=c(256,34,0,5))  
RPPA <- data.frame(B=c(46,47,45,49), A=c(51,87,34,87), D=c(76,34,98,23))  

mRNA
#>    A   B   C  D  E   F
#> 1 25  56  45 13 17 256
#> 2 76  89 456 65 18  34
#> 3 23  12 243 23 19   0
#> 4 45 452   5 16 20   5
RPPA
#>    B  A  D
#> 1 46 51 76
#> 2 47 87 34
#> 3 45 34 98
#> 4 49 87 23
mRNA[, names(RPPA)]
#>     B  A  D
#> 1  56 25 13
#> 2  89 76 65
#> 3  12 23 23
#> 4 452 45 16

相关问题