У меня есть тиббл, который выглядит следующим образом:
library(tidyverse)
df <- tibble(table_name = c("horse", "x", "x", "x", "dog", "x", "rat", "x", "x", "x", "x", "x"),
value_str = c(NA, "a", "b", "c", NA, "a", NA, "b", "d", "e", "f", "g"))
> df
# A tibble: 12 x 2
table_name value_str
<chr> <chr>
1 horse <NA>
2 x a
3 x b
4 x c
5 dog <NA>
6 x a
7 rat <NA>
8 x b
9 x d
10 x e
11 x f
12 x g
Я хочу создать отдельные векторы для "лошадь", "собака" и "крыса", которые содержат строки из value_str
в строках ниже «лошадь» до «собака», «собака» до «крыса» и «крыса» до конца. Я хочу, чтобы вывод был похож на следующие векторы:
vec_horse <- tibble(horse = c("a", "b", "c")) %>% pull(., horse)
vec_dog <- tibble(dog = c("a")) %>% pull(., dog)
vec_rat <- tibble(rat = c("b", "d", "e", "f", "g")) %>% pull(., rat)
> vec_horse
[1] "a" "b" "c"
Я бы сделал group_by()
для df$table_name
, но в этом случае он не работает, так как он касается положения значения df$value_str
.
Я не могу свернуть df$value_str
в один вектор, потому что выходные данные должны быть отдельными векторами для каждой из уникальных категорий в df$table_name
.
Заранее спасибо!