r - 列重命名不适用于一个特定的列-R
问题描述
我正在使用大型数据集,这些数据集在公共列名前面都有不同的数字。我创建了一个函数,可以成功更改除一个之外的所有列名。见下文 “MOTH PD JB R YNG”=“MOTHR PAID JOB”,
vars_renamed <- function(.data){rename(.data, contains(c("R'S SEX" = "R'S SEX",
"HRS/W WRK SCHYR" = "HRS/W WRK SCHYR",
"R'S RACE" = "R'S RACE",
"FATHR EDUC LEVEL" = "FATHR EDUC LEVEL",
"MOTHR EDUC LEVEL" = "MOTHR EDUC LEVEL",
**"MOTH PD JB R YNG" = "MOTHR PAID JOB",**
"R'S HSHLD ALONE" = "R'S HSHLD ALONE",
"DALY CMNTY AFFRS" = "DALY CMNTY AFFRS",
"DALY ALONE LEISR" = "DALY ALONE LEISR",
"SCH ACTV-ATHLTCS" = "SCH ACTV-ATHLTCS",
"SCH ACTV-OTH ACT" = "SCH ACTV-OTH ACT",
"YRS PRF ARTS-OUT" = "YRS PRF ARTS-OUT",
"YRS VOCATNL CLUB" = "YRS VOCATNL CLUB",
"YRS BOYS/GRLS CL" = "YRS BOYS/GRLS CL",
"YRS PRT-TIME JOB" = "YRS PRT-TIME JOB",
"DALY ACTV SPORTS" = "DALY ACTV SPORTS",
"SCH ACTV-PBLCTNS" = "SCH ACTV-PBLCTNS",
"SCH ATV-ACDMC CL" = "SCH ATV-ACDMC CL",
"YRS OTH CLB/ACTV" = "YRS OTH CLB/ACTV",
"YRS HOBBY CLUB" = "YRS HOBBY CLUB",
"YRS COMMNTY ORGZ" = "YRS COMMNTY ORGZ",
"DALY VIST W/FRDS" = "DALY VIST W/FRDS",
"SCH ACTV-PRF ART" = "SCH ACTV-PRF ART",
"SCH ATV-STDN GVT" = "SCH ATV-STDN GVT",
"YRS SPORTS-OUTSC" = "YRS SPORTS-OUTSC",
"YRS SCOUTING" = "YRS SCOUTING",
"YRS CHRCH YTH GR" = "YRS CHRCH YTH GR", all = TRUE )))}
除一列外,所有其他列都成功更改。任何人都可以帮助解释为什么这可能不起作用?该功能混乱但有效,我只是无法弄清楚为什么它不起作用。
解决方案
尝试这个。
vars_renamed <- function(nms) {
vec <- c("R'S SEX" = "R'S SEX",
"HRS/W WRK SCHYR" = "HRS/W WRK SCHYR",
"R'S RACE" = "R'S RACE",
"FATHR EDUC LEVEL" = "FATHR EDUC LEVEL",
"MOTHR EDUC LEVEL" = "MOTHR EDUC LEVEL",
"MOTH PD JB R YNG" = "MOTHR PAID JOB",
"R'S HSHLD ALONE" = "R'S HSHLD ALONE",
"DALY CMNTY AFFRS" = "DALY CMNTY AFFRS",
"DALY ALONE LEISR" = "DALY ALONE LEISR",
"SCH ACTV-ATHLTCS" = "SCH ACTV-ATHLTCS",
"SCH ACTV-OTH ACT" = "SCH ACTV-OTH ACT",
"YRS PRF ARTS-OUT" = "YRS PRF ARTS-OUT",
"YRS VOCATNL CLUB" = "YRS VOCATNL CLUB",
"YRS BOYS/GRLS CL" = "YRS BOYS/GRLS CL",
"YRS PRT-TIME JOB" = "YRS PRT-TIME JOB",
"DALY ACTV SPORTS" = "DALY ACTV SPORTS",
"SCH ACTV-PBLCTNS" = "SCH ACTV-PBLCTNS",
"SCH ATV-ACDMC CL" = "SCH ATV-ACDMC CL",
"YRS OTH CLB/ACTV" = "YRS OTH CLB/ACTV",
"YRS HOBBY CLUB" = "YRS HOBBY CLUB",
"YRS COMMNTY ORGZ" = "YRS COMMNTY ORGZ",
"DALY VIST W/FRDS" = "DALY VIST W/FRDS",
"SCH ACTV-PRF ART" = "SCH ACTV-PRF ART",
"SCH ATV-STDN GVT" = "SCH ATV-STDN GVT",
"YRS SPORTS-OUTSC" = "YRS SPORTS-OUTSC",
"YRS SCOUTING" = "YRS SCOUTING",
"YRS CHRCH YTH GR" = "YRS CHRCH YTH GR")
ind <- which(outer(names(vec), nms, Vectorize(grepl)), arr.ind = TRUE)
nms[ind[,2]] <- vec[ind[,1]]
nms
}
它的用途:
data.frame("MOTH PD JB R YNG"=2, "R's HSHLD ALONE"=1, check.names=FALSE) %>%
rename_with(.fn = vars_renamed)
# MOTHR PAID JOB R's HSHLD ALONE
# 1 2 1
推荐阅读
- docker - 在 gitlab 管道上构建 docker 期间的自动装配问题
- .net-core - .net core 中的 Stimulsoft Report Viewer 本地化问题
- forms - 颤振等效于键上的字符串验证
- jquery - 根据不升序或降序的列值对表行重新排序
- javascript - 量角器 - 通过 count() 函数遍历所有元素对我不起作用
- r - 如何使用 str_detect 在两个不同的数据帧之间进行匹配?
- sql - SQL 语句中的合并语句在单个 SP 中添加、更新、删除
- java - QueryDsl 可以处理更大量的数据吗?
- python - python中的电报机器人代理
- javascript - 与子进程同步运行 JavaScript 的最佳方法是什么?