2017-08-10 71 views
4

下面是关于我的数据集的一些背景信息,如果你想了解我的问题来自哪里(我真的想合并数据集,所以也许有人知道更有效的方法)。如何只替换R中多个变量名的最后一个字符?

问题: 如何仅替换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()函数时,我只删除第一个。

回答

0

我们需要使用的元字符$提示字符串的结尾对原始数据集的列名

names(data) <- sub('_2$', '', names(data)) 
names(data) 
#[1] "h_2ello" "how"  "are"  "you" 

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

相关问题