【发布时间】:2017-10-03 19:50:49
【问题描述】:
数据框 Day1 和 Day2 均包含带前缀的变量名称(分别为 rad_ 和 tv_,以及 you_ 和 pho_)。每个数据框还包含不带前缀的变量名称,我想为这些变量名称添加前缀 (noncom_)。最后,我想创建新的数据框 NewDay1 和 NewDay2,它们部分以原始数据框命名,但其中所有变量名称都有前缀。实际上有很多数据框,所以我的目标是一个通用的解决方案。任何帮助将非常感激。
起点(dfs):
Day1 <- data.frame("rad_cat"=c(NA,NA,NA),"tv_dog"=c(NA,NA,NA) ,"tv_turkey_E3"=c(NA,NA,NA), "zebra_E2"=c(NA,NA,NA), "elephant"=c(NA,NA,NA))
Day2 <- data.frame("you_cat"=c(NA,NA,NA),"pho_horse_E3_E6"=c(NA,NA,NA) ,"pho_cow_E4_E4_E1"=c(NA,NA,NA), "hippo_E1"=c(NA,NA,NA), "lion_E4_E1"=c(NA,NA,NA))
期望的结果(dfs):
NewDay1 <- data.frame("rad_cat"=c(NA,NA,NA),"tv_dog"=c(NA,NA,NA) ,"tv_turkey_E3"=c(NA,NA,NA), "noncom_zebra_E2"=c(NA,NA,NA), "noncom_elephant"=c(NA,NA,NA))
NewDay2 <- data.frame("you_cat"=c(NA,NA,NA),"pho_horse_E3_E6"=c(NA,NA,NA) ,"pho_cow_E4_E4_E1"=c(NA,NA,NA), "noncom_hippo_E1"=c(NA,NA,NA), "noncom_lion_E4_E1"=c(NA,NA,NA))
目前的尝试:
library(dplyr)
dfs <- list(Day1, Day2)
numdfs <- length(dfs)
for (i in 1:numdfs)
{
dfa <- dfs[i] %>% select(-matches("rad_|tv_")) %>% setNames(paste0('noncom_', names(.)))
dfb <- dfs[i] %>% select(matches(c("rad_|tv_")))
dfc <- cbind(dfa,dfb) ]
name<-paste("New",dfs[i],sep="")
assign(name, dfc))
}
【问题讨论】:
-
还有很多前缀吗?或者你只有这4个? (rad_ 和 tv_,还有 you_ 和 pho_)