【发布时间】:2021-03-09 04:15:19
【问题描述】:
我有两个数据框 y 和 z
y <- data.frame(ID = c("A", "A", "A", "B", "B"), gene = c("a", "b", "c", "a", "c"))
z <- data.frame(A = c(2,6,3), B = c(8,4,9), C=c(1,6,2))
rownames(z) <- c("a", "b", "c")
因此,对于 y,我有一个表格,其中包含每个患者的患者 ID 和基因,在 Z 中,我在第一行有相同的患者 ID,并且有一个具有特定值的基因列表(这在此处并不重要)。 y 中的基因在 z 中,但在 z 中有些基因不包含在 y 中。
我想做的是merge这个框架并有这样的东西:
a b c
A 1 1 1
B 1 0 1
所以对于每个患者,如果z中的基因也在y,中,则填1,否则填0
我真的不知道如何处理这个,有什么想法吗? 谢谢
【问题讨论】:
-
z中的A、B、C列是否与结果有任何关系? -
提出问题时,编写可重现的示例(我们可以在自己的 R 会话中轻松剪切和粘贴的示例)。您希望我们能够轻松访问您的
y和z对象。看看dput这个函数,可能会有帮助。 -
话虽如此,您需要投射或传播您的数据,合并它,然后再次投射或传播它。为此,如果您是 tidyverse 的粉丝,请尝试
tidyr::pivot_wider或tidyr::pivot_longer。如果你更老派,reshape2::dcast或reshape2::melt。 -
感谢您对再现性的评论和建议,您当然完全正确,下次我一定会考虑。感谢您的时间和精力!