我在 R 中的 DF 有问题。我有一个带有基因名称的 df1。
V1 V2
GENE A GENE E
GENE B GENE D
GENE C GENE A
GENE D GENE B
GENE E GENE C
还有另一个名为 df2 的数据框,如下所示:
Name ID Symbol
GENE A 1254 AKT
GENE B 1879 POU5F1
GENE C 5689 EGR1
GENE D 2385 JUN
GENE E 5687 MYC
我想要的输出如下:
NameSource SourceID NameTarget TargetID
AKT 1254 MYC 5687
POU5F1 1879 JUN 2385
EGR1 5689 AKT 1254
JUN 2385 POU5F1 1879
MYC 5687 EGR1 5689
我尝试使用以下语法:
genes <- df1[which(df1$V1, df2$Symbol), ]
和:
genes <- df1$V1 %in% df2$Symbol
但出于某种原因,我无法获得预期的输出。有人吗?
最佳答案
我们可以使用匹配
res <- cbind(df2[-1], df2[match(df1$V2, df2$Name),-1])[c(2,1,4 ,3)]
colnames(res) <- c("NameSource", "SourceID", "NameTarget", "TargetID")
row.names(res) <- NULL
res
# NameSource SourceID NameTarget TargetID
#1 AKT 1254 MYC 5687
#2 POU5F1 1879 JUN 2385
#3 EGR1 5689 AKT 1254
#4 JUN 2385 POU5F1 1879
#5 MYC 5687 EGR1 5689
关于r - 子集化时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47944609/