Я хочу объединить два кадра данных разных размеров с помощью двоичной функции (а именно str_count()
), чтобы строки df1
(содержащие регулярное выражение) стали столбцами df2
(содержа текстовые данные).
library(dplyr)
# dummy data
df1 <-
tribble(
~regex_name, ~regex_data
, "reg1", "(\\w+ )"
, "reg2", "\\d+"
)
df2 <-
tribble(
~metadata, ~text
, "meta1", "text 1"
, "meta2", "text2 3 4"
)
# should result in something like
df1_2 <-
tribble(
~metadata, ~text, ~reg1, ~reg2
, "meta1", "text 1", 1, 2
, "meta2", "text2 3 4", 0, 3
)
То, что я пробовал до сих пор
После небольшого поиска в Интернете, я думаю, что есть несколько возможных подходов, которые я мог бы использоватьнекоторые проблемы или, возможно, некоторые ненужные промежуточные шаги.
- a. Использовать
full_join
(присоединиться by=
к чему?) B. Затем следует tidyr::spread()
, (или pivot_wider()
??) - Используйте
purrr::cross2()
(или cross_dfr()
) (но это дает неправильную структуру?), Затем (b1.b) - Используйте некоторую комбинацию
purrr::map2()
и mutate
(я не смог заставить это работать должным образом, и map2
требует, чтобы кадры данных были одинаковой длины)
Использование регулярных выражений просто в качестве примера (и с чем я работаю). Кроме того, хотя я использую tidyverse
библиотеки, любое другое элегантное (простое?) Решение, которое работает, прекрасно (я просто склонен делать ошибки, если слишком много промежуточных шагов).