Учитывая два приведенных ниже вектора, есть ли способ создать желаемый кадр данных? Это представляет реальную ситуацию, с которой мне приходится сталкиваться во фреймах данных: первый содержит столбец со значениями базы данных (ключи), а второй содержит столбец из 1000+ строк, каждое из которых имеет имя файла (потенциалы), которое мне нужно сопоставить. Проблема в том, что может быть несколько файлов (потенциалов), соответствующих любому данному ключу. Я работал с grep, merge, inner join и т. Д., Но не смог объединить их в одно решение. Любой совет приветствуется!
potentials <- c("tigerINTHENIGHT",
"tigerWALKINGALONE",
"bearOHMY",
"bearWITHME",
"rat",
"imatchnothing")
keys <- c("tiger",
"bear",
"rat")
desired <- data.frame(keys, c("tigerINTHENIGHT, tigerWALKINGALONE", "bearOHMY, bearWITHME", "rat"))
names(desired) <- c("key", "matches")
Псудо-код для того, что я считаю решением:
#new column which is comma separated potentials
# x being the substring length i.e. x = 4 means true if first 4 letters match
function createNewColumn(keys, potentials, x){
str result = na
foreach(key in keys){
if(substring(key, 0, x) == any(substring(potentals, 0 ,x))){ //search entire potential vector
result += potential that matched + ', '
}
}
return new column with result as the value on the current row
}