我有一个数据框,其中包含许多名称较长的列。我想重命名列,以便以后更容易使用,并希望将它们分组。
因此,如果列名称类似于Subject1.ABCD123.Type1, Subject2ABCD123.Type1, ABCSubject1.ABCD123.Type2, XYZ.Subject3ABCD123.Type2
等。
我想将它们更改为Subject1_Type1, Subject2_Type1, Subject1_Type2, Subject3_Type2 etc.
我怎样才能在R?
中这样做答案 0 :(得分:5)
您可以使用sub
:
colnames(yourdf) <- sub(".*(Subject\\d+).*(Type\\d+).*", "\\1_\\2", colnames(yourdf))
在这里,您有两种感兴趣的模式:一个以“主题”开头,后跟一个数字,一个以“类型”开头,后跟一个数字。它们中的每一个都放在regex
表达式(函数pattern
的参数sub
)的括号中,因此我们可以检索它们(使用\\1
和\\2
)并在参数replacement
中使用它们以获得我们想要的名称。
示例:的
sub(".*(Subject\\d+).*(Type\\d+).*", "\\1_\\2", c("Subject1.ABCD123.Type1", "Subject2ABCD123.Type1", "ABCSubject1.ABCD123.Type2", "XYZ.Subject3ABCD123.Type2"))
#[1] "Subject1_Type1" "Subject2_Type1" "Subject1_Type2" "Subject3_Type2"