Как переставить ячейки в строке на основе частичных совпадений строк в Excel, R - PullRequest
1 голос
/ 03 июля 2019

У меня есть большая таблица Excel с 8 столбцами. Упрощенно это выглядит так:

Identity column1  column2  column3  column4  column5  column6  column7
     1     tk=tr   cont=fb  sourc=a  camp=b    med=c    nm=he   ad=fst
     2     camp=a  cont=fb  sourc=a   med=b     NA        NA     NA
     3     vid=tr  sourc=b  camp=b    med=c   cont=fb     NA     NA

Мне нужно организовать его так, чтобы все ячейки, содержащие cont, находились в одном столбце, все ячейки, содержащие camp, находились в одном столбце и т. Д. Хотя это только частичные совпадения, как вы можете видеть, например, некоторые говорят camp=b, а некоторые говорят camp=a. Мне нужно, чтобы в каждом столбце была только одна строка: одна для cont, одна для sourc, одна для camp, одна для med.

Столбец «identity» отформатирован правильно, а значения trk и vid не нужны, но они появляются только в некоторых строках.

Я изучал условное форматирование, расширенные фильтры и сортировки, упорядочивание по настраиваемым спискам и vba все для Excel. Я счастлив преобразовать в файл R и работать там.

Я бы хотел, чтобы результат выглядел так:

Identity  column1  column2  column3  column4  column5  column6  Column7
   1       cont=fb  sourc=a  camp=b    med=c    NA        NA       NA
   2       cont=fb  sourc=a  camp=a    med=b    NA        NA       NA
   3       cont=fb  sourc=b  camp=b    med=c    NA        NA       NA

Значения cont =, sourc =, camp = и med = - единственные, которые мне нужны в конечном продукте, поэтому было бы замечательно, если бы я мог игнорировать / удалять другие при создании этого, однако это не совсем необходимо ,

Большое спасибо за любую помощь, которую вы можете предложить!

1 Ответ

1 голос
/ 03 июля 2019

То, что вы хотите, можно сделать с помощью INDEX/MATCH

Используйте следующую формулу в каждом из четырех столбцов:

=INDEX(B2:H2,MATCH("cont=*",B2:H2,))

=INDEX(B2:H2,MATCH("sourc=*",B2:H2,))

=INDEX(B2:H2,MATCH("camp=*",B2:H2,))

=INDEX(B2:H2,MATCH("med=*",B2:H2,))

и заполните

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...