月の最初の3文字をchar変数として月と呼ばれる列を持つcsvが与えられました。例えば:月をmmmに変換する
"Jan", "Feb","Mar",..."Dec"
1〜12月の数値表現にこれを変換する、または日付の形式であってもタイプする方法はありますか?
月の最初の3文字をchar変数として月と呼ばれる列を持つcsvが与えられました。例えば:月をmmmに変換する
"Jan", "Feb","Mar",..."Dec"
1〜12月の数値表現にこれを変換する、または日付の形式であってもタイプする方法はありますか?
使用match
と事前に定義されたベクトルmonth.abb
:
tst <- c("Jan","Mar","Dec")
match(tst,month.abb)
[1] 1 3 12
あなたはに対してチェックする組み込みのベクトルmonth.abb
を使用することができます数、例えばへの変換時:
mm <- c("Jan","Dec","jan","Mar","Apr")
sapply(mm,function(x) grep(paste("(?i)",x,sep=""),month.abb))
Jan Dec jan Mar Apr
1 12 1 3 4
grepの構築物が取り大文字と小文字の違いを気にする。それが必要でない場合は、
match(mm,month.abb)
のように機能します。あなたはまた、日、年の列を持っている場合は
、あなたが適切なコードを使用して、変換関数のいずれかを使用することができます例えば
mm <- c("Jan","Dec","jan","Mar","Apr")
year <- c(1998,1998,1999,1999,1999)
day <- c(4,10,3,16,25)
dates <- paste(year,mm,day,sep="-")
strptime(dates,format="%Y-%b-%d")
[1] "1998-01-04" "1998-12-10" "1999-01-03" "1999-03-16" "1999-04-25"
ありがとうJoris、これも便利です。私はそれを使って時系列の実際の日付を取得するために列を貼り付ける必要があります。 – John
オプションのカップルが使用
(も?strftime
参照) :
vec <- c("Jan","Dec","Jan","Apr")
は
> Months <- 1:12
> names(Months) <- month.abb
> unname(Months[vec])
[1] 1 12 1 4
および/または
> match(vec, month.abb)
[1] 1 12 1 4
エクストラクレジット:あなたの月の略語が英語でない場合は動作します答えを与えます! (例えば、 "Jan"、 "Fev"、 "Mar"、 "Avr"、 "Mai"など)[ヒント:システムロケールを一時的に切り替えることで、 'as.Date'を' %b'形式...] –