【发布时间】:2020-06-25 08:32:00
【问题描述】:
我有两个数据集:
#df1:
Gene interactors
ACE BRCA, HER2
NOS NA, NA
P53 NA
CDON TGBP
df2:
Gene interactors
AGT NOS, HER2
NPKB CDON
P70 GPC
IK TGBP
我正在寻找在 df1 中被列为 df2 下的相互作用子的基因,并用与 df2 中的相互作用子相匹配的相互作用子识别 df1 中的基因
输出:
Gene interactors matched_gene_interactor matched_interactor_interactor
ACE BRCA, HER2 FALSE TRUE
NOS NA, NA TRUE FALSE
P53 NA FALSE FALSE
CDON TGBP TRUE TRUE
#ACE has an interactor (HER2) in both df1 and df2
#NOS matches itself as an interactor in df2
#CDON matches itself as an interactor in df2 and as having an interactor (TGBP) in both df1 and df2
我已经能够通过以下代码获取matched_gene_interactor 列:
df1$matched_gene_interactor <- df1$Gene %in% unlist(strsplit(df2$interactors, ", "))
但我无法获得第二个 matched_interactor_interactor 专栏
我已经尝试了一些东西,但还没有找到如何让它达到我想要的第二列的地步,例如:
df1interactors <- unlist(strsplit(df1$interactors, ", "))
df2interactors <- unlist(strsplit(df2$interactors, ", "))
matched_interactor_interactor <- df1interactors %in% df2interactors
如何匹配具有未列出的字符串拆分的两个数据集?我有生物学背景,所以不知道从哪里开始。
示例输入数据:
df1:
structure(list(Gene = c("ACE", "NOS", "P53", "CDON"), interactors = c("BRCA, HER2",
"NA, NA", NA, "TGBP")), row.names = c(NA, -4L), class = c("data.table",
"data.frame"))
df2:
structure(list(Gene = c("AGT", "NPKB", "P70", "IK"), interactors = c("NOS, HER2",
"CDON", "GPC", "TGBP")), row.names = c(NA, -4L), class = c("data.table",
"data.frame"))
【问题讨论】:
标签: r string dataframe strsplit