合并两列,但更改特定变量的名称

时间:2015-04-28 15:50:20

标签: r tidyr

我有两个因子列,其中包含大量缺失数据。在数据收集期间更改了特定变量的名称。我想要做的是将两列合并在一起,但更改特定旧变量的名称以匹配新列。

我用过

help <- data.frame(var1 = c("red", "", "blue", "", "red", "orange", "", "", "red"),
                   var2 = c("", "lightred", "blue", "lightred", "", "", "", "", ""))

创建

> help
    var1     var2
1    red         
2        lightred
3   blue     blue
4        lightred
5    red         
6 orange         
7                
8                
9    red         

我希望

> help
    var1     var2   newvar
1    red          lightred
2        lightred lightred
3   blue     blue     blue
4        lightred lightred
5    red          lightred
6 orange            orange
7                         
8                         
9    red          lightred

因此,出于本示例的目的,将变量合并到newvar并将变量red的名称更改为lightred。我有许多变量需要改变,但是如果我可以让它与其中一个变量一起使用,我认为我能够对其余变量进行故障排除。

更新:感谢@Veerendra Gadekar,接近解决方案......

我使用了以下代码

help$newvar= gsub('red', 'lightred', help$var1)

但变量lightred未转移到newvar ...输出低于

    var1     var2   newvar
1    red          lightred
2        lightred         
3   blue     blue     blue
4        lightred         
5    red          lightred
6 orange            orange
7                         
8                         
9    red          lightred

想法?

1 个答案:

答案 0 :(得分:2)

这是使用gsub()

执行此操作的方法
 help$newvar= gsub('red', 'lightred', help$var1)

如果您有多个要替换的元素,那么您可以执行类似这样的操作

# for instance

to.replace = c('red', 'blue')

replace.with = c('lightred', 'lightblue')

for(i in 1:length(to.replace)){
   help$newvar[i] = gsub(to.replace[i], replace.with[i], help$var1[i])}