如何在R中重命名多条观测值 实现工作日缩写转换为全名称
R语言tibble星期缩写转全拼实现方法
你可以通过以下几种常用方法完成需求:
方法1:使用dplyr::case_match()显式映射
适合需要自定义调整匹配规则的场景,逻辑清晰、容错性高。
# 加载dplyr包,tidyverse环境默认包含该包 library(dplyr) # 示例数据,可替换为你自己的tibble df <- tibble( col1 = 1:7, col2 = rnorm(7), week_days = c("mo", "tu", "we", "th", "fr", "sa", "su") ) # 替换week_days列的缩写为全拼 df <- df %>% mutate( week_days = case_match( week_days, "mo" ~ "monday", "tu" ~ "tuesday", "we" ~ "wednesday", "th" ~ "thursday", "fr" ~ "friday", "sa" ~ "saturday", "su" ~ "sunday" ) )
方法2:使用命名向量批量映射
适合映射关系固定的场景,代码更简洁。
# 构造映射向量,键为缩写、值为对应全拼 week_map <- c( "mo" = "monday", "tu" = "tuesday", "we" = "wednesday", "th" = "thursday", "fr" = "friday", "sa" = "saturday", "su" = "sunday" ) # 批量替换列值 df <- df %>% mutate(week_days = week_map[week_days])
方法3:基础R实现(无需加载第三方包)
依赖原生函数完成操作,不需要额外安装依赖。
# 通过factor的标签映射完成替换 df$week_days <- factor( df$week_days, levels = c("mo", "tu", "we", "th", "fr", "sa", "su"), labels = c("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday") ) # 如果你不需要因子类型,可转成字符串格式 df$week_days <- as.character(df$week_days)
注意事项
- 如果你的
week_days列存在大小写不统一的情况,匹配前可以先调用tolower(week_days)统一转为小写,避免匹配失败 - 所有方法默认直接覆盖原
week_days列,如果你需要保留原始数据,可以在mutate时创建新列,比如week_days_full = ...
内容的提问来源于stack exchange,提问作者Chrisabe
相关产品推荐
相关产品推荐

