温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to rearrange cells within a row based on partial string matches in Excel, R
excel r excel-2019

其他 - 如何在Excel,R中基于部分字符串匹配重新排列行中的单元格

发布于 2020-03-27 11:24:45

我有一个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

“身份”列的格式正确,并且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 =值是最终产品中唯一需要的值,因此,如果我在生成此值时可以忽略/删除其他值,那将是很好的选择,但并非完全必要。

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

查看更多

查看更多

提问者
jawk23
被浏览
230
cybernetic.nomad 2019-07-03 23:36

您想要的可以完成 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,))

然后填充

在此处输入图片说明