适当时更改列名,并忽略不适用

时间:2018-03-10 02:22:28

标签: r dplyr tidyr

我正在尝试格式化数据文件,但我的问题是某些文件包含的变量多于其他文件。我想更改列名以适合我的主数据文件。

例如

df <- data.frame(
       f =c(111,123,128),
       w = c(99,84,102),
       s = c(122,105,112) )

返回

    f   w   s
1 111  99 122
2 123  84 105
3 128 102 112

为了重命名我所做的列:

rename_df <- df %>% rename(Fall=f,Winter=w, Spring=s)

我的问题是,有些数据文件只有Fall,有些来自Fall和Winter,有些来自全部3,或者你能想到的任何组合。我试图找出R是否还有寻找“f”,“w”,“s”,当它找到其中一个列名时,它会将其更改为相应的文本(“Fall”,“Winter” ,“春天”)当列的一次不存在时,它就会忽略它。我正在尝试制作一个代码,一旦数据文件进来,我就可以通过该代码运行它,它将返回给我一个df,并更改了相应的列。

由于

2 个答案:

答案 0 :(得分:5)

即使df具有指定列名称的子集,这也有效:

L <- list(f = "Fall", w = "Winter", s = "Spring")
names(df) <- L[names(df)]

答案 1 :(得分:1)

newnames <- c(s="Spring", f="Fall", w="Winter")

df <- setNames(df, newnames[match(names(df), names(newnames))])

> df
  Fall Winter Spring
1  111     99    122
2  123     84    105
3  128    102    112