web-dev-qa-db-ja.com

数値の月を月の省略形に変換します

月という数値ベクトルとしての列を持つcsvがあります。

これを月の短縮月名に変換する方法はありますか?

41
user3358686

month.abb定数を見てください。たとえば、月の番号で構成される整数のベクトルがあるとします。それを使用して、次を実行することで月名の3文字の略語を取得できます。

> month <- c(12,3,6,2,3,7)
> month.abb[month]
[1] "Dec" "Mar" "Jun" "Feb" "Mar" "Jul"
70
Jilber Urbina

非標準の月の省略形が必要な場合は、独自の月参照ベクトルを作成します。

#dummy data
df <- data.frame(month = c(1,3,5))
#months vector assuming 1st month is Jan.
mymonths <- c("Jan","Feb","Mar",
              "Apr","May","Jun",
              "Jul","Aug","Sep",
              "Oct","Nov","Dec")
#add abbreviated month name
df$MonthAbb <- mymonths[ df$month ]

#result
df
#   month MonthAbb
# 1     1      Jan
# 2     3      Mar
# 3     5      May
11
zx8754

Lubridateを使用して、既知の月の日からベクトルを構築します。

テスト:これらの月番号について、Jan = 1を想定します:

> m = c(1,2,6,7,9,10,11,12,0,99,NA)

行う:

> require(lubridate)
> as.character(month(ymd(010101) + months(m-1),label=TRUE,abbr=TRUE))
 [1] "Jan" "Feb" "Jun" "Jul" "Sep" "Oct" "Nov" "Dec" "Dec" "Mar" NA   

どこ (m-1)は、1月の日付から始まるためです。

それがどのように比較されるかを見るには:

> cbind(m,as.character(month(ymd(010101) + months(m-1),label=TRUE,abbr=TRUE)))
      m         
 [1,] "1"  "Jan"
 [2,] "2"  "Feb"
 [3,] "6"  "Jun"
 [4,] "7"  "Jul"
 [5,] "9"  "Sep"
 [6,] "10" "Oct"
 [7,] "11" "Nov"
 [8,] "12" "Dec"
 [9,] "0"  "Dec"
[10,] "99" "Mar"
[11,] NA   NA   

月番号をmod-12として解釈するため、99は3(99 = 3 +(8 * 12))にマップされ、NAはNAを返します。すでに投稿されている回答のいくつかはこれを行いません。 0は12月であるため、-1は11月です。

9
Spacedman

英語の省略形が受け入れられる場合、Rには組み込み定数month.abb短縮された月名のベクトル。数字の日付を使用して、短縮月名のベクターにインデックスを付けるだけです。たとえば、ダミーデータを使用する場合:

set.seed(1)
df <- data.frame(A = runif(10), Month = sample(12, 10, replace = TRUE))

インデックスにいくつかのオプションがありますmonth.abb via Month

> with(df, month.abb[Month])
 [1] "Mar" "Mar" "Sep" "May" "Oct" "Jun" "Sep" "Dec" "May" "Oct"
> df <- transform(df, MonthAbb = month.abb[Month])
> df
            A Month MonthAbb
1  0.26550866     3      Mar
2  0.37212390     3      Mar
3  0.57285336     9      Sep
4  0.90820779     5      May
5  0.20168193    10      Oct
6  0.89838968     6      Jun
7  0.94467527     9      Sep
8  0.66079779    12      Dec
9  0.62911404     5      May
10 0.06178627    10      Oct
6
Gavin Simpson