r - 如何根据现有模式重命名 R 数据框的列?

标签 r rename data-manipulation

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

因此,如果列名称类似于 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/

相关文章:

r - 在数据框中存储润滑间隔

r - 提取润滑间隔内的月份

Scala:在同一个文件中导入不同名称的对象

synchronization - Unison 移动 root 与 rootalias

R 绘图不显示图形窗口

r - 将整数转换为 base36

javascript - 谁拥有 javascript 中子框架的名称,父框架还是子框架?

python - 如何用列名替换 pandas 中的值

python - 从两个不同的列中获取 id 值的滚动总和?

r - 如何移动R中矩阵的每一行