2016-04-25 18 views
0

YYYYMM-integerを文字に変換せずに日付に変換したいのですが(SASのようなmdy-functionはありますか?)このコードを次のように置き換えます:yyyymm-integerを日付に変換する

dateint<-201511 
datestr<-paste(toString(dateint,length=8),'01') 
date<-as.Date(datestr,'%Y%m%d') 
print(date) 
class(date) 

このバージョンを使用しています。可能であれば結果のクラスがあまりに日付でなければなりません:

year<-dateint %% 100 
month<-floor(dateint/100) 
date2<-ISOdate(year,month,1) # I can't make this work .. 
print(date2) 
class(date2) 

おかげ&種類は

+1

解決策があなたの目的に十分でない理由を説明してください。うるう年(およびそれらに関する複雑な規則)のために、文字列を解析しない(それによってOS機能を使用する)解決策は実現不可能である。 – Roland

+0

なぜ文字に変換しても問題ないのですか? – mpiktas

+0

数字を文字に変換してから数値(=日付)に戻すのは、奇妙な気がします。たぶん、これは愚かな質問です - あるいは、私はこのように質問をしましょう。誰かがR経験をして、コードの最初の部分を適切なプログラミングと考えるか? –

答えて

4

に関してはパッケージlubridateは、数値入力を受け付ける機能ymdを、持っている:あなたが必要

> library(lubridate) 
> ymd(20151101) 
[1] "2015-11-01 UTC" 

しかし、最後の日を追加する。

+0

内部的に文字に変換されます。 – Roland

+0

私はそれがないと述べていません:) – mpiktas