r - 子集化时出错

标签 r

我在 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/

相关文章:

r - 根据其他变量中的条件值,通过一个变量对 data.table 进行子集化

r - 绘制 R 数据框中所有列的分布

r - 获取 R 中预定义函数的解析树

r - 避免使用Knitr,Markdown生成自动超链接

R - 找不到函数 'melt()'

r - kde2d 密度对比

r - 运行 glinternet 时出错 : a statistical function for automatic model selection using interaction terms by Stanford's professor T. Hastie

r - echarts4r 创建数据透视图(子组 x 轴)

r - 合并不同时间间隔的xts对象

r - 为什么我的列名称更改在 R 中不起作用?