我有一个带有列的数据框:“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"
答案 0 :(得分:3)
问题是gsub(1, ...)
会匹配&#34; 1&#34;在&#34; 1&#34;,&#34; 10&#34;,&#34; 11&#34;和&#34; 12&#34;,除非你用&#34; ^&#限制它34;和&#34; $&#34; (例如,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