У меня есть фрейм данных, который выглядит следующим образом:
cat split_me
<chr> <chr>
1 MVHYM7693B c(1, 7)
2 ZRRBS1363E c(2, 7, 18)
3 ZXYLV2407F 3
4 HXPPE8608M 4
5 JDARX0644Q c(5, 19)
6 HDBOK8136L 6
7 DCJPS0833K c(1, 2, 7, 18)
Я могу использовать следующее для разделения данных:
splt <- to_split %>%
split(.$split_me)
, что дает мне список из 19 элементов. Однако исходные данные имели 20 элементов. Разделение, которое повторяется, разделяется c(5, 19)
. Как я могу проигнорировать это повторение и разделить c(5, 19)
дважды?
Я хочу назвать разбиения в соответствии со столбцом cat
в to_split
Поэтому c(5, 19)
будет иметь разные имена (JDARX0644Q
) и(BZRXF3978Z
).
Данные:
to_split <- structure(list(cat = c("MVHYM7693B", "ZRRBS1363E", "ZXYLV2407F",
"HXPPE8608M", "JDARX0644Q", "HDBOK8136L", "DCJPS0833K", "UGDYS1458B",
"ROQIP3617B", "HZMGG4347S", "EHESH8836T", "YGXZY0073I", "NMRDZ9798F",
"WXBKD9937H", "JEMQK6388P", "QQMSV0889M", "IBMJM4467Q", "IOIDB2993Q",
"BZRXF3978Z", "NJLNW3044Z"), split_me = c("c(1, 7)", "c(2, 7, 18)",
"3", "4", "c(5, 19)", "6", "c(1, 2, 7, 18)", "8", "9", "10",
"11", "12", "c(13, 18)", "14", "15", "16", "17", "c(2, 7, 13, 18)",
"c(5, 19)", "20")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-20L))
РЕДАКТИРОВАТЬ:
Что я считаю лучшим для моих данных, это переупорядочить столбец split_me
. На данный момент данные выглядят так:
# A tibble: 20 x 2
cat split_me
<chr> <chr>
1 MVHYM7693B c(1, 7)
2 ZRRBS1363E c(2, 7, 18)
3 ZXYLV2407F 3
4 HXPPE8608M 4
5 JDARX0644Q c(5, 19)
6 HDBOK8136L 6
7 DCJPS0833K c(1, 2, 7, 18)
8 UGDYS1458B 8
9 ROQIP3617B 9
10 HZMGG4347S 10
11 EHESH8836T 11
12 YGXZY0073I 12
13 NMRDZ9798F c(13, 18)
14 WXBKD9937H 14
15 JEMQK6388P 15
16 QQMSV0889M 16
17 IBMJM4467Q 17
18 IOIDB2993Q c(2, 7, 13, 18)
19 BZRXF3978Z c(5, 19)
20 NJLNW3044Z 20
Здесь 1
в c(1, 7)
соответствует строке 1 данных, а 7
соответствует строке 7
. Я думаю, что я должен перестроить столбец так, чтобы:
строка 2
не изменилась. Т.е. c(2, 7, 18)
- 2
является первым и поэтому не нуждается в изменении. Строка 5
также не изменяется, поскольку 5
в c(5, 19)
является первой и соответствует номеру строки 5
.
Строка 7
изменяется. Первоначально это c(1, 2, 7, 18)
, однако 7
является третьим в последовательности, я хочу переместить его в первый. Так что c(7, 1, 2, 18)
.
Строка 13
не меняется. Изменения строки 18 - исходный c(2, 7, 13, 18)
требуемый вывод c(18, 2, 7, 13)
Изменения строки 19 - исходный c(5, 19)
требуемый вывод c(19, 5)
.
Это должно исправить проблему с дубликатами и проблемы, возникшие у меня позже с кодом. Например, я пытаюсь получить его так, чтобы для разбиений c(5, 19)
: данные, содержащиеся в 5
, были бы arranged
или выше данных в 19
(во фрейме данных). Тогда для split c(19, 5)
данные в 19
будут выше данных в 5
. (Надеюсь, это имеет смысл)