如何根据一些现有模式重命名R数据帧的列?

时间:2015-05-28 07:25:52

标签: r rename data-manipulation

我有一个数据框,其中包含许多名称较长的列。我想重命名列,以便以后更容易使用,并希望将它们分组。

因此,如果列名称类似于Subject1.ABCD123.Type1, Subject2ABCD123.Type1, ABCSubject1.ABCD123.Type2, XYZ.Subject3ABCD123.Type2等。

我想将它们更改为Subject1_Type1, Subject2_Type1, Subject1_Type2, Subject3_Type2 etc.

我怎样才能在R?

中这样做

1 个答案:

答案 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"