2016-11-30 5 views
2

に日付オブジェクトに非標準文字列の日付を変換する -私はこの形式で文字列値で構成され、列V8が含まれているデータフレームを持っているR

これらの項目は、日付のある
7/16, 02/11, 5/12 

、7月の月を表す第1 2016年には2011年の2月を表す2番目の月、2012年の5月には最後の時刻が表示されます。

as.Dateメソッドを使用してこれらの日付をRで表すことを希望しますが、この表現は非標準であいまいです。

私は、CSVファイルの値をas.Dateで理解できる表現にプログラムで変換することに頼っていましたが、これは一般的な問題であるため、あまり関与がなく、より慣用的な解決方法があるはずです。私はstrptime機能を見つけましたが、私はそれを使用する方法については明確ではない、strptime("09/12", format="%m/%y")を試しましたが、それはNAを返します。

これらの非標準文字列値をDateオブジェクトに変換するにはどうすればよいですか?

答えて

3

1つのオプションは、as.Date()を使用し、数ヶ月の各月の最初に発生したと仮定し、次のようになります。

> strDates <- c("07/16", "02/11", "05/12") 
> dates <- as.Date(paste0("01/", strDates), "%d/%m/%y") 
> dates 
[1] "2016-07-01" "2011-02-01" "2012-05-01" 
+1

ありがとうございました!私の目的のために完全に働いた。 – Hugo

3

一つの潜在的修正は、動物園のパッケージからas.yearmon()を使用しています。

> as.yearmon("09/12", format ="%m/%y") 
[1] "Sep 2012" 

これは、「日付」オブジェクトを取得せず、代わりに「yearmon」オブジェクトを取得することのみの欠点です。

+0

元の形式の情報だけを保持するソリューションの場合は+1。必要に応じてDateに変換することもできます: 'library(zoo); as.Date(as.yearmon( "09/12"、format = "%m /%y")) ' – ds440

1

lubridateパッケージには、このために有用で来るかもしれない:

library(lubridate) 
strDates <- c("07/16", "02/11", "05/12") 
as.Date(parse_date_time(strDates, orders="%m/%y")) 
[1] "2016-07-01" "2011-02-01" "2012-05-01"