我正在尝试格式化数据文件,但我的问题是某些文件包含的变量多于其他文件。我想更改列名以适合我的主数据文件。
例如
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,并更改了相应的列。
由于
答案 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