2015-03-03 83 views
0

我有一個列:「Mes」的數據框...它是一個數字向量。它有1月1日,2月2日,等等。但我需要幾個月的名字。R:gsub - 將月份(目前的數字換成月份的實際名稱)

這是我的代碼:

我能做些什麼來得到我需要什麼?

例如「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) 

結果:

當我申請: 「唯一(DF $ MES)」:得到這個:

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

而不是'gsub',爲什麼不使用'function'或基本匹配? – A5C1D2H2I1M1N2O1R2T1 2015-03-03 04:24:47

+0

您可否詳細解答一下答案?謝謝 – 2015-03-03 04:25:44

+2

嘗試'month.name [sample(1:12)]' – akrun 2015-03-03 04:26:46

回答

3

的問題是,gsub(1, ...)將在符合 「1」除非您使用「^」和「$」(例如,gsub("^1$", "Enero", Mes))或除非您在gsub代碼的較長列表中從12變爲1,否則不要使用「1」,「10」,「11」和「12」 。

更簡單的方法可能是使用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 
+2

[這個問題]的第一個答案(http://stackoverflow.com/questions/5869539/confusion-between-factor-levels-and-factor-labels)可能對那些不熟悉facotrs的人有幫助。 – Jthorpe 2015-03-03 04:33:38

+0

謝謝,但用gsub我試過這個:'df $ Mes < - gsub(^ 1 $,「Enero」,df $ Mes),但get:Error:意外的'^'in「df $ Mes < - gsub (^「' – 2015-03-03 04:37:21

+0

@OmarGonzales,加引號。 – A5C1D2H2I1M1N2O1R2T1 2015-03-03 04:38:05

相關問題