В файле dataframe DT
, Var1
является unique.The ID
разделилась на Spl_1
& Spl_2
первыми тремя символов/цифр. Кроме того, DT
был group_by
Spl_2
. Следовательно, существуют четыре группы:Использование R как определить конкретный шаблон в столбцах кадра данных и заменить интересующие вас шаблоны (ы)?
- KLM001
- OKT004
- MLO010
- AAA008
dataframe файл:
DT
ID Spl_1 Spl_2 Var1
1 001KLM001 001 KLM001 xx
2 001KLM001 001 KLM001 rr
3 044KLM001 044 KLM001 qwe
4 023OKT004 023 OKT004 sdf
5 023OKT004 023 OKT004 dfg
6 023OKT004 023 OKT004 ssg
7 023OKT004 023 OKT004 htj
8 023OKT004 023 OKT004 yjy
9 001OKT004 001 OKT004 wttt
10 054MLO010 054 MLO010 dg
11 023MLO011 023 MLO010 asd
12 001AAA008 001 AAA008 dggj
13 001AAA008 001 AAA008 sfe
14 001AAA008 001 AAA008 lkyt
15 056AAA008 056 AAA008 fghe
16 123AAA008 123 AAA008 wert
Условия:
Хотя Spl_2
идентичны для сгруппированных строк, но Spl_1
разные. (например, для KLM001
есть два Spl_1
: 001
& 044
).
Большинство сгруппированных укусов имеет Spl_1
001
, который представляет большой интерес. Все, кроме Spl_1
001
, является своего рода артефактом и нуждается в идентификации и замене на 001
.
ПРИМЕЧАНИЕ Однако, если сгруппировано Spl_2
доза не имеетSpl_1
с 001
должна быть сохранена. В этом примере (DT
) это MLO010
, который имеет только Spl_1
: 054
& 023
.
Намерение:
На основе сгруппированных Spl_2
, посмотрите на Spl_1
и посмотреть, если есть 001
среди них. Если это так, замените non 001
Spl_1
на 001
и приложите его к Spl_2
и положите его в новый столбец под названием Cor_ID
, сохраняя при этом весь DT
.
Ожидаемый результат:
ID Spl_1 Spl_2 Var1 Cor_ID
1 001KLM001 001 KLM001 xx 001KLM001
2 001KLM001 001 KLM001 rr 001KLM001
3 044KLM001 044 KLM001 qwe 001KLM001
4 023OKT004 023 OKT004 sdf 001OKT004
5 023OKT004 023 OKT004 dfg 001OKT004
6 023OKT004 023 OKT004 ssg 001OKT004
7 023OKT004 023 OKT004 htj 001OKT004
8 023OKT004 023 OKT004 yjy 001OKT004
9 001OKT004 001 OKT004 wttt 001OKT004
10 054MLO010 054 MLO010 dg 054MLO010
11 023MLO011 023 MLO010 asd 023MLO010
12 001AAA008 001 AAA008 dggj 001AAA008
13 001AAA008 001 AAA008 sfe 001AAA008
14 001AAA008 001 AAA008 lkyt 001AAA008
15 056AAA008 056 AAA008 fghe 001AAA008
16 123AAA008 123 AAA008 wert 001AAA008
Я новичок в r
. Но я думаю, что могу сделать это с gsub
. Однако я не знаю, как именно?
@Parfait, Исправлено! tnx :) – Daniel
@AndrasDeak tnx, я читал и понял :) – Daniel