在R中重命名多个列的简化方法

在R中重命名多个列的简化方法,r,dataframe,rename,R,Dataframe,Rename,这感觉应该很简单!如果我找不到明显的答案,请道歉-我在搜索时没有找到它 我合并了两组数据——假设一组与新妈妈有关,另一组与婴儿有关。在他们最初的数据帧中,他们没有在列中指定他们是母亲还是婴儿,但现在他们结合在一起,对于某些列,为了避免混淆,值得指定。我不一定要对所有列都这样做,因为在某些情况下,这是显而易见的,并且会使列名太长和笨拙,而在另一些情况下,它们与这两者都相关 例如,我有类似的东西,除了有更多的列: family <- c("Ali", "Baker", "Cruz") sex

这感觉应该很简单!如果我找不到明显的答案,请道歉-我在搜索时没有找到它

我合并了两组数据——假设一组与新妈妈有关,另一组与婴儿有关。在他们最初的数据帧中,他们没有在列中指定他们是母亲还是婴儿,但现在他们结合在一起,对于某些列,为了避免混淆,值得指定。我不一定要对所有列都这样做,因为在某些情况下,这是显而易见的,并且会使列名太长和笨拙,而在另一些情况下,它们与这两者都相关

例如,我有类似的东西,除了有更多的列:

family <- c("Ali", "Baker", "Cruz")
sex <- c("FEMALE", "MALE", "FEMALE")
first_name <- c("Aylin", "Betty", "Camila")
age <- c(30, 27, 36)
area <- c("Aberdeen", "Birmingham", "Cardiff")


births_df <- data.frame(family, sex, first_name, age, area)

带有dplyr的
系列:

library(dplyr)
births_df %>% rename_at(3:4,~paste0("mother_", .))
#   family    sex mother_first_name mother_age       area
# 1    Ali FEMALE             Aylin         30   Aberdeen
# 2  Baker   MALE             Betty         27 Birmingham
# 3   Cruz FEMALE            Camila         36    Cardiff
还包括:

births_df %>% rename_at(c("first_name", "age"),~paste0("mother_", .))
births_df %>% rename_at(vars(first_name, age),~paste0("mother_", .))

使用
dplyr

library(dplyr)
births_df %>% rename_at(3:4,~paste0("mother_", .))
#   family    sex mother_first_name mother_age       area
# 1    Ali FEMALE             Aylin         30   Aberdeen
# 2  Baker   MALE             Betty         27 Birmingham
# 3   Cruz FEMALE            Camila         36    Cardiff
还包括:

births_df %>% rename_at(c("first_name", "age"),~paste0("mother_", .))
births_df %>% rename_at(vars(first_name, age),~paste0("mother_", .))

另一种方法是使用
rename_at()
vars()
matches()

库(dplyr)
出生率(单位:df%)
重命名(vars(匹配项(“first_name | age”),~str_replace(,“^”,“mother|”))
#家庭性别母亲姓母亲年龄区
#1阿里女艾琳30阿伯丁
#2贝克男贝蒂27伯明翰
#3克鲁兹女卡米拉36加的夫

我们找到任何与
名字
年龄
匹配的列,然后在字符串开头使用
str\u replace()
添加
母亲
。这种方法在这种情况下有效。

另一种方法是使用
rename_at()
vars()
matches()

库(dplyr)
出生率(单位:df%)
重命名(vars(匹配项(“first_name | age”),~str_replace(,“^”,“mother|”))
#家庭性别母亲姓母亲年龄区
#1阿里女艾琳30阿伯丁
#2贝克男贝蒂27伯明翰
#3克鲁兹女卡米拉36加的夫

我们找到任何与
名字
年龄
匹配的列,然后在字符串开头使用
str\u replace()
添加
母亲
。这种方法在这种情况下有效。

您需要
姓名(出生日期)[3:4]您需要
姓名(出生日期)[3:4]谢谢!我用了你的第一个选择,这很有效。我以前不知道重命名,但这正是我需要的。谢谢!我用了你的第一个选择,这很有效。我以前不知道重命名,但这正是我所需要的。
births_df %>% rename_at(c("first_name", "age"),~paste0("mother_", .))
births_df %>% rename_at(vars(first_name, age),~paste0("mother_", .))
library(dplyr)
births_df <- births_df %>% 
  rename_at(vars(matches("first_name|age")), ~ str_replace(., "^", "mother_"))
#   family    sex mother_first_name mother_age       area
# 1    Ali FEMALE             Aylin         30   Aberdeen
# 2  Baker   MALE             Betty         27 Birmingham
# 3   Cruz FEMALE            Camila         36    Cardiff