Мы можем сделать это несколькими способами.Один из способов - создать группу, взяв кумулятивную сумму логического вектора на основе непустых элементов в 'group' и summarise
'order' путем paste
объединения элементов
library(dplyr)
df_missing %>%
group_by(group1 = cumsum(group != "")) %>%
summarise(group = first(group), order = paste(order, collapse= ' ')) %>%
select(-group1)
# A tibble: 2 x 2
# group order
# <fct> <chr>
#1 East this is supposed to be one line
#2 West this is supposed to be one line too
Или вместо создания нового столбца группировки используйте cumsum
в качестве индекса для заполнения unique
непустых элементов в 'group'
df_missing %>%
group_by(group = unique(group[group!=""])[cumsum(group != "")]) %>%
summarise(order = paste(order, collapse=' '))
Другой вариант - изменить пустое значение наNA
, затем fill
с предшествующими значениями, отличными от NA, сгруппированными по 'group', paste
в порядке, указанном выше
library(tidyr)
df_missing %>%
mutate(group = replace(group, group == '', NA)) %>%
fill(group) %>%
group_by(group) %>%
summarise(order = paste(order, collapse= ' '))