Одна tidyverse
возможность может быть:
df %>%
mutate(id = cumsum(grepl("content", Column1))) %>%
group_by(id) %>%
mutate(ContentID = first(Column2)) %>%
filter(!grepl("content", Column1)) %>%
ungroup() %>%
select(-id) %>%
spread(Column1, Column2)
ContentID value1 value2 value3 value4 value5 value6
<chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 123 California truck home <NA> <NA> <NA>
2 537 <NA> truck <NA> private first_class wheels
3 897 Georgia car work boeing <NA> <NA>
Здесь она, во-первых, создает переменную ID на основе вхождения content
в "Столбец1" и группирует его.Во-вторых, он создает переменную «ContentID» со значениями из первой строки в «Column2» для каждой группы.В-третьих, он отфильтровывает строки, которые содержат content
в «Столбце1».Наконец, он распространяет данные.