R: gsub-替换月份(当前数字为月份的真实名称)

  • 本文关键字:真实 实名 数字 gsub- 替换 r
  • 更新时间 :
  • 英文 :


我有一个数据帧,列为:"Mes"。。。它是一个数字矢量。1月份有1个,2月份有2个,依此类推。但我需要月份的名称。

这是我的代码:

我该怎么办才能得到我需要的东西?

例如,"Diciembre"被转换为:"EneroFebrero"。

df$Mes <- gsub(1, "Enero", df$Mes)
df$Mes <- gsub(2, "Febrero", df$Mes)
df$Mes <- gsub(3, "Marzo", df$Mes)
df$Mes <- gsub(4, "Abril", df$Mes)
df$Mes <- gsub(5, "Mayo", df$Mes)
df$Mes <- gsub(6, "Junio", df$Mes)
df$Mes <- gsub(7, "Julio", df$Mes)
df$Mes <- gsub(8, "Agosto", df$Mes)
df$Mes <- gsub(9, "Setiembre", df$Mes)
df$Mes <- gsub(10, "Octubre", df$Mes)
df$Mes <- gsub(11, "Noviembre", df$Mes)
df$Mes <- gsub(12, "Diciembre", df$Mes)

结果:

当我申请:"unique(df$Mes)":得到这个:

 [1] "Enero"        "Febrero"      "Marzo"        "Abril"        "Mayo"         "Junio"       
 [7] "Julio"        "Agosto"       "Setiembre"    "Enero0"       "EneroEnero"   "EneroFebrero"

问题是gsub(1, ...)将匹配"1"、"10"、"11"one_answers"12"中的"1",除非您用"^"one_answers"$"(例如gsub("^1$", "Enero", Mes))限制它,或者除非您在gsub代码的长列表中从12变为1。

一种更简单的方法可能是使用factor或基于基本索引的匹配。

示例:

set.seed(1)
Mes <- sample(12, 20, TRUE)
index <- c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", 
           "Agosto", "Setiembre", "Octubre", "Noviembre", "Diciembre")
index[Mes]
#  [1] "Abril"     "Mayo"      "Julio"     "Noviembre" "Marzo"     "Noviembre"
#  [7] "Diciembre" "Agosto"    "Agosto"    "Enero"     "Marzo"     "Marzo"    
# [13] "Setiembre" "Mayo"      "Octubre"   "Junio"     "Setiembre" "Diciembre"
# [19] "Mayo"      "Octubre"  
factor(Mes, levels = 1:12, labels = index)
#  [1] Abril     Mayo      Julio     Noviembre Marzo     Noviembre Diciembre Agosto   
#  [9] Agosto    Enero     Marzo     Marzo     Setiembre Mayo      Octubre   Junio    
# [17] Setiembre Diciembre Mayo      Octubre  
# 12 Levels: Enero Febrero Marzo Abril Mayo Junio Julio Agosto Setiembre ... Diciembre

最新更新