如何在R中仅替换多个变量名称的最后一个字符?

4
以下是我的数据集的一些背景信息,如果您想了解我的问题来自哪里(实际上我想合并数据集,也许有人知道更有效的方法)。
问题: 如何在R中仅用空格替换变量名称的最后一个字符(对于多个变量)?
我尝试使用sub()函数,它可以正常工作,但是有些变量名包含我想要多次更改的字符(例如str2tt2)。我只想“删除”或替换最后的“2”。
示例: 假设我有一个带有这些变量名称的数据集,并且我只想删除最后的“_2”字符,我尝试了这个:
  h_2ello_2 how_2 are_2 you_2
1         1     3     5     7
2         2     4     6     8

names(data) <- sub('_2', '', names(data))

输出:

  hello_2   how are you
1       1     3   5   7
2       2     4   6   8

现在,我想让我的代码去掉最后的"_2",这样它就可以返回'h_2ello'而不是hello_2。
有人知道怎么做吗?谢谢!
背景信息:
我正在尝试从三个不同的数据集中构建一个数据集。这三个数据集来自三个不同的测量时刻,因此它们的变量名称分别包括其测量时刻后面的字符。也就是说,在测量时刻2,变量名称为scoreA2,scoreB2,scoreC2;在测量时刻3,变量名称为scoreA3,scoreB3和scoreC3。
由于我想将这些文件合并在一起,我想删除数据集中的“2”和“3”,然后将它们合并起来,以便看起来每个人都在同一时刻进行了测量。
然而,有些得分名称也包括字符2和3。例如:str2tt2是Stroop卡2总时间测量时刻2的变量名称。我只想删除最后的“2”,但使用sub()函数时只能删除第一个。
1个回答

1
我们需要使用元字符$来表示原始数据集列名的字符串结尾。
names(data) <- sub('_2$', '', names(data))
names(data)
#[1] "h_2ello" "how"     "are"     "you"

在 OP 的代码中,_2h_2ello_2 中的第一个实例匹配,因为它是 sub 并从 h_2 中删除 _2。相反,我们需要指定位置为字符串的最后字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接