【发布时间】:2022-01-07 22:46:42
【问题描述】:
我想在我的数据框 (data_df) 中搜索许多变量 (key1 到 key30) 中的任何模式(存储在矢量“my_patterns”)。 对于每个观察,结果将存储在 30 个虚拟变量/列(key1_match 到 key30_match)中,1 表示“keyX”变量具有与“my_patterns”向量中的值之一匹配,而 0 不匹配。对于特定的观察。我只需要知道有一个匹配项,而不是哪个匹配项。
如何在 R 中做到这一点,最好使用 tidyverse 函数?
my_patterns <- c("AF021", "DT022", "DV053", "UJC12", "UJD02", "UJD05", "AF012", "AG053", "JAH01", "JCA55", "QBB99")
data_df <- structure(list(id = c(1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 1317, 11832,
1943, 1316, 8317, 13405, 12881, 12881, 12881, 12881, 12881, 12881,
12882, 12882, 12882, 12882, 12883, 12883, 12883), key1 = c("",
"", "", "", "DR029", "", "AF063", "UJD05", "JCF12", "", "AF021",
"DT022", "XS912", "UJC12", "UJD05", "JAH00", "UJD02", "DT016",
"DT016", "", "DV071", "DR029", "2154", "", "AJ079", "XV018",
"7462", "7460", "LEG10"), key2 = c(NA, NA, NA, NA, NA, NA, NA,
NA, "JFF00", NA, "AF021", "DT022", "XS912", "UJC12", "UJD05",
"JAH00", "UJD05", "DT017", "DT017", NA, "DV022", "JDB10", NA,
NA, "AJ080", NA, NA, "7461", "LCA06"), key3 = c(NA, NA, NA, NA,
NA, NA, NA, NA, "UJD02", NA, "AF021", "DT022", "ZV033", "UJC12",
"UJD05", "JAH00", "AF012", "DT019", "DT019", NA, "DV079", NA,
NA, NA, "DR029", NA, NA, "7469", NA), key4 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "AF021", "DT022", "DV071", "UJC12", "UJD05",
"JAH00", "AG053", NA, "DT024", NA, "DV027", NA, NA, NA, "DT016",
NA, NA, "7280", NA), key5 = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, "AF021", "DT022", "DV071", "UJC12", "UJD05", "JKB30",
"JAH01", NA, NA, NA, "DV064", NA, NA, NA, "UJD02", NA, NA, NA,
NA), key6 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "UJD02",
"DT022", "DV071", "UJC12", "UJD05", "JKB30", "JCA55", NA, NA,
NA, "DV040", NA, NA, NA, NA, NA, NA, NA, NA), key7 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "UJD02", "DT022", "DV071", "UJD05",
"JCA55", "JKB30", "UJD02", NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA), key8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
"UJD02", "DV051", "DV071", "UJD05", "JCA55", "JKB30", NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key9 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "UJD02", "DV053", "DV071", "UJD05",
"JCA55", "JFK10", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA), key10 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "UJD02",
"DV055", "DV071", "UJD05", "TPW99", "JFK10", NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA), key11 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "AF053", "DV057", "DV071", "UJD05", "TPW99",
"JFK10", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
key12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "AF053",
"DV057", "DV071", "UJD05", "TPW99", "JFK10", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key13 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "AF053", "DV057", "DV071",
"JCA55", "AJ050", "JFB40", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), key14 = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, "AF053", "DV057", "DV071", "JCA55", "AJ050",
"JFB40", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA), key15 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "AF053",
"DV057", "DV071", "JCA55", "AJ050", "JFB40", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key16 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "AG009", "DV057", "DV071",
"JCA55", "AG040", "JFB40", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), key17 = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, "AG009", "DV057", "DV071", "JCA55", "AG040",
"JFF23", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA), key18 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "AG009",
"DV057", "DV071", "JCA55", "AG040", "JFF23", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key19 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "AG009", "DV057", "DV071",
"JCA55", "XS009", "JFF23", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), key20 = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, "AG009", "DV057", "DV071", "JCA55", "XS009",
"JFF23", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA), key21 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "AJ004",
"DV057", "DT016", "JCA55", "XS009", "JWA00", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key22 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "AJ004", "DV057", "DV071",
"JCA55", "UJD05", "JWA00", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), key23 = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, "AJ004", "DV057", "XS918", "JCA55", "UJD05",
"JWA00", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA), key24 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "AJ004",
"DV057", "DV071", "JCA55", "JCA55", "JWA00", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key25 = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, "AJ004", "DV057", "DV071",
"JCA55", "TPW99", "QBB99", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), key26 = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, "DV057", "DV071", "JCA55", "AJ050", "QBB99",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key27 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "DV057", "DV071",
"JCA55", "AG040", "QBB99", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), key28 = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, "DV057", "DV071", "JCA55", "XS009", "QBB99",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), key29 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "DV057", "DV071",
"JCA55", NA, "QBB99", NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA), key30 = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, "DV057", "DV071", "JCA55", NA, "QBB99", NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11814L, 106482L, 17355L,
11807L, 74026L, 120903L, 116030L, 116031L, 116032L, 116033L,
116034L, 116035L, 116036L, 116037L, 116038L, 116039L, 116040L,
116041L, 116042L), class = "data.frame")
【问题讨论】: