如何根据 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" 列的格式正确,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= 值是我在最终产品中唯一需要的值,所以如果我可以 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,))
并向下填充
我有一个包含 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" 列的格式正确,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= 值是我在最终产品中唯一需要的值,所以如果我可以 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,))
并向下填充