我有一个数据框,其中有很多名称较长的列。我想重命名这些列,以便以后更容易使用它们,并希望将它们分组。
因此,如果列名称类似于 Subject1.ABCD123.Type1、Subject2ABCD123.Type1、ABCSubject1.ABCD123.Type2、XYZ.Subject3ABCD123.Type2
等
我想将它们更改为 Subject1_Type1、Subject2_Type1、Subject1_Type2、Subject3_Type2 等
如何在 R 中执行此操作?
最佳答案
您可以使用sub
:
colnames(yourdf) <- sub(".*(Subject\\d+).*(Type\\d+).*", "\\1_\\2", colnames(yourdf))
这里有 2 种您感兴趣的模式:一种以“主题”开头,后跟数字,另一种以“类型”开头,后跟数字。它们中的每一个都放在 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"
关于r - 如何根据现有模式重命名 R 数据框的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30499883/