使用tidyverse批量重命名数据列的优雅方法
tidyverse批量重命名数据列的优雅方法
嗨,刚接触R和tidyverse的话,手动一个个写重命名确实挺麻烦的,尤其是23列这么多!别担心,有几个超简洁的方法能搞定这个事儿~
方法一:从原列名中提取编号
你的列名都是以「数字+点」开头的,刚好可以用str_extract直接提取开头的数字部分,一步完成所有列的重命名:
library(tidyverse) survey <- survey %>% rename_with(~ str_extract(., "^\\d+"))
这里^\\d+的意思是匹配列名开头的一个或多个数字,完美对应你想要的"1"、"2"、"3"...这样的列名,完全不用手动输入每一对映射!
方法二:直接按列顺序生成编号
如果你的列的顺序刚好就是1到23的对应顺序(从你的列名来看应该是这样的),那还有更直接的方式——直接生成和列数匹配的序列作为新列名:
survey <- survey %>% rename_with(~ as.character(seq_along(.)))
seq_along(.)会自动生成从1到列总数的序列,转成字符型后就是你要的简洁列名,这个方法连正则表达式都不用写,更省心!
小提示
要是之后需要对照原问题,建议提前把原列名存下来:
original_questions <- colnames(survey)
之后想查某个编号对应什么问题,直接看original_questions就好啦~
备注:内容来源于stack exchange,提问作者nstein1
相关产品推荐
相关产品推荐

