Эксперты в Р.
У меня есть два кадра данных.
датафрейм один:
df1 <- c("xx", "bb", "zz")
второй кадр данных:
df2 <- data.frame(A=c("xx", "be", "zz", "jj"), B=c("xyx, uu, zz", "uu, zbbz, zbz, ccc", "cc, zzx", "ddd"), C=c("bbbb", "yyy", "xxq", "ooo"), D=c("ooo", "yyy", "ccc", "zoz"))
Таким образом, df2 выглядит следующим образом:
A B C D
1 xx xyx, uu, zz bbbb ooo
2 be uu, zbbz, zbz, ccc yyy yyy
3 zz cc, zzx xxq ccc
4 jj ddd ooo zoz
Я хочу сопоставить x с y, чтобы получить новый фрейм данных. Глядя на ответы Stackoverflow, я узнал, как выполнить точное сопоставление. Однако в текущей ситуации я хочу сделать как точное, так и частичное совпадение. Мне кажется, что "grep" может помочь, но я пока не могу заставить его работать в моем случае, пожалуйста, помогите.
В df1 у меня есть три термина для сопоставления "xx", "bb" и "zz". Вместо поиска точных xx, bb, zz в df2. Я хочу проверить, можно ли найти эти термины в столбцах A и B df2, которые могут содержать точное совпадение и частичное совпадение.
Например, я бы рассмотрел
xx строка соответствия 1 (точное соответствие с A1)
bb соответствует только строке 2 (частичное
совпадение с B2)
zz соответствует обе строки 1
и строка 3 (частичное совпадение с B1 и
точное совпадение с А3, частичное совпадение
с B3 тоже),
Как zz совпадают с двумя
две вещи, я хочу отсортировать одну
с точным совпадением первым в финале
фрейм данных, то есть строка 3, показанная первой,
строка 1 показывается рядом.
В то время как строка 4
df2 не совпадает ни с чем в
таблица, так что, это не будет отображаться
в окончательном фрейме данных.
Наконец, я хочу получить фрейм данных, добавив соответствующий df2 к df1 следующим образом:
V1 A B C D
1 xx xx xyx, uu, zz bbbb ooo
2 bb be uu, zbbz, zbz, ccc yyy yyy
3 zz zz cc, zzx xxq ccc
4 zz xx xyx, uu, zz bbbb ooo
Можно ли использовать grep или sort в этом случае? Прошу проинструктировать умный способ сделать это. Спасибо.