Существует ли функция R для сопоставления столбцов фрейма данных на основе строки с частичным сходством?

#r #string #string-matching

Вопрос:

Я пытаюсь сопоставить столбцы двух фреймов данных в R на основе частично соответствующей строки. Ниже вы найдете небольшой пример того, как выглядят мои фреймы данных. Фрейм данных 1 содержит строки-стимулы, соответствующие строкам в фрейме данных 2, за которыми стоит «_FAM».

Фрейм данных 1:

 Stimulus     Mean
CR00         0.333
CR01         0.972
DF_0_30      0.831
DF_6_40      0.327
 

Фрейм данных 2:

 Stimulus     Mean
DF_0_30_FAM  0.423
CR00_FAM     0.768
DF_6_40_FAM  0.672
CR01_FAM     0.012
 

Есть ли инструмент, соответствующий этому? В конце концов, я хотел бы создать 1 кадр данных, содержащий все совпадающие строки, чтобы я мог вычислить корреляцию между этими двумя средними значениями.

Спасибо!

Комментарии:

1. Вы заглядывали в agrep это дело ?

Ответ №1:

Мы можем сделать что-то подобное, если у вас есть только шаблон _FAM , добавленный во второй фрейм данных :

 df2[,"Stimulus"]=str_remove(df2[,"Stimulus"],"_FAM")
merge(df1,df2,by="Stimulus")
 

Сначала вы удаляете шаблон _FAM , а затем можете напрямую объединить свои наборы данных

Комментарии:

1. Спасибо за помощь! Я попробовал это, однако это дает мне следующий результат после первой строки: Стимул (строка 1): c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, ….) Предупреждающее сообщение: В stri_replace_first_regex(строка, шаблон, fix_replacement(замена): аргумент не является атомарным вектором; принудительное, А затем при выполнении второй строки: > объединить(stim_data,Famsubset 2,by=»стимул») [1] среднее значение стимула.x Std.x Среднее значение stim_char avg_fam. y Std.y <0 строк> (или имена строк 0-длины). Вы знаете, как я могу это решить?

2. Трудно сказать вам, что здесь происходит, без обзора ваших собственных кадров данных. Если вы добавите вывод dput(head(stim_data)) и dput(head(Famsubset2)) в свой пост, я был бы рад помочь