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

标签 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

想法?

最佳答案

这是使用 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])}

关于r - 合并两列,但更改特定变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924064/

相关文章:

python - 如何以更有效的方式为位置列表找到最近的位置?

r Shiny 使用basename()来获取文件名

r - rep(space,max_width): invalid 'times' argument; in one column中的错误

r - 是什么导致了 tidyr 警告消息 : "attributes are not identical across measure variables"

r - tidyr VS dplyr + reshape2

r - 如何使用 tidyverse 操作此数据框

r - 如何在同一数据中拟合两个线性回归?

r - 关于R中保存以var的对象命名的数据

r - tidyverse 使用重复键传播并根据唯一键填充 NA

r - 查找两个数据框中的共同条目