data.table solution
пример данных
df <- structure(list(CodeToMatch = structure(1:3, .Label = c("1", "2",
"3"), class = "factor"), Code.1 = structure(c(3L, 1L, 2L), .Label = c("1",
"3", "8"), class = "factor"), Code.2 = structure(c(2L, 1L, 2L
), .Label = c("2", "4"), class = "factor"), Code.3 = structure(1:3, .Label = c("1",
"3", "5"), class = "factor"), pCode.1 = structure(1:3, .Label = c("p1",
"p2", "p3"), class = "factor"), pCode.2 = structure(c(3L, 1L,
2L), .Label = c("p1", "p3", "p8"), class = "factor"), pCode.3 = structure(c(2L,
1L, 2L), .Label = c("p2", "p4"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))
код
library(data.table)
#first, melt wide table to long format
df.melt <- melt( setDT(df), id.vars="CodeToMatch", measure.vars = patterns(Code="^Code\\..*", pCode="^pCode.*"))
#now finding everything is easy...
df.melt[ Code == CodeToMatch, .(CodeToMatch, pCode)]
выход
# CodeToMatch pCode
# 1: 3 p3
# 2: 2 p1
# 3: 1 p4