如何根据某些现有模式重命名 R 数据框的列?
How to rename columns of R dataframe based on some existing pattern?
我有一个数据框,其中包含很多名称较长的列。我想重命名这些列,以便以后更容易使用它们,并想将它们分组。
因此,如果列名类似于 Subject1.ABCD123.Type1, Subject2ABCD123.Type1, ABCSubject1.ABCD123.Type2, XYZ.Subject3ABCD123.Type2
等
我想把它们改成类似Subject1_Type1, Subject2_Type1, Subject1_Type2, Subject3_Type2 etc.
的东西
我如何在 R 中执行此操作?
您可以使用 sub
:
colnames(yourdf) <- sub(".*(Subject\d+).*(Type\d+).*", "\1_\2", colnames(yourdf))
在这里,您有 2 个您感兴趣的模式:一个以 "Subject" 开头,后跟一个数字,另一个以 "Type" 开头,后跟一个数字。它们中的每一个都放在 regex
表达式(函数 sub
的参数 pattern
)中的括号之间,因此我们可以检索它们(使用 \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"
我有一个数据框,其中包含很多名称较长的列。我想重命名这些列,以便以后更容易使用它们,并想将它们分组。
因此,如果列名类似于 Subject1.ABCD123.Type1, Subject2ABCD123.Type1, ABCSubject1.ABCD123.Type2, XYZ.Subject3ABCD123.Type2
等
我想把它们改成类似Subject1_Type1, Subject2_Type1, Subject1_Type2, Subject3_Type2 etc.
我如何在 R 中执行此操作?
您可以使用 sub
:
colnames(yourdf) <- sub(".*(Subject\d+).*(Type\d+).*", "\1_\2", colnames(yourdf))
在这里,您有 2 个您感兴趣的模式:一个以 "Subject" 开头,后跟一个数字,另一个以 "Type" 开头,后跟一个数字。它们中的每一个都放在 regex
表达式(函数 sub
的参数 pattern
)中的括号之间,因此我们可以检索它们(使用 \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"