如何根据 Excel, R 中的部分字符串匹配重新排列行内的单元格

How to rearrange cells within a row based on partial string matches in Excel, R

我有一个包含 8 列的大型 excel 电子表格。简化后看起来像这样:

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" 列的格式正确,trkvid 值是不必要的,但它们只出现在某些行中。

我研究了条件格式、高级过滤器和排序、自定义列表排序,以及 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= 值是我在最终产品中唯一需要的值,所以如果我可以 ignore/delete 其他值来制作这个,那就太好了,但并非完全必要。

非常感谢您提供的任何帮助!

你想做的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,))

并向下填充