library(dplyr)
df <- tibble(Letters = c("A", "B", "C", "C", "C", "D", "D", "D", "E", "E", "E"))
meta <- c("foo", "bar", "baz")
Letters
<chr>
1 A
2 B
3 C
4 C
5 C
6 D
7 D
8 D
9 E
10 E
11 E
Здесь я хотел бы преобразовать вектор символов meta
в буквы C
, D
, E
в определенном порядке вектора.
I 'мы пробовали что-то вроде:
df <- df %>% mutate(New = case_when(Letters %in% c("C", "D", "E") ~
meta %>% rep_len(nrow(df)),
TRUE ~ NA_character_))
Однако это запускает процесс векторизации в верхней части фрейма данных, и C
, D
, E
заполняются в порядке baz
, foo
, bar
вместо foo
, bar
, baz
.
# A tibble: 11 x 2
Letters New
<chr> <chr>
1 A NA
2 B NA
3 C baz
4 C foo
5 C bar
6 D baz
7 D foo
8 D bar
9 E baz
10 E foo
11 E bar
Желаемый вывод:
Letters New
<chr> <chr>
1 A NA
2 B NA
3 C foo
4 C bar
5 C baz
6 D foo
7 D bar
8 D baz
9 E foo
10 E bar
11 E baz