如果数据框列中的变量名称与向量重命名变量中的名称匹配

时间:2020-05-26 13:30:27

标签: r variables rename

给出一个数据帧和一个向量

appIds=1,2

我想浏览set.seed(123) feature <- sample(LETTERS,30,replace = T) number<-sample(1:100,30, replace = T) df<-data.frame(feature,number) rename<-c("N","V","C","E") ,如果存储在df$feature中的字母与列rename中的字母匹配,我想将它们重命名为df$feature

我很确定必须在某个地方回答过这个问题,尽管我已经寻找了很长时间。

2 个答案:

答案 0 :(得分:3)

您可以使用%in%查找包含rename的行:

df$feature[df$feature %in% rename] <- "other"

如果df$featurefactor并且在级别中不包含other,则需要在与以下级别交换之前将other添加到级别:

levels(df$feature) <- unique(c(levels(df$feature), "other"))

或通过以下方式将其投放到character

df$feature <- as.character(df$feature)

答案 1 :(得分:1)

使用dplyr的一个选项:

df %>%
  mutate(feature = str_replace(feature, paste(rename, collapse = "|"), "other"))