2016-04-13 9 views
0

lubridateとその他の日付関連関数のために、今後の作業には標準的な明確なフォーマットが必要であるため、RStudioで日付フォーマットを別のものに変更する必要があります。 HiredDate日付欄の書式を変更する

Function,HiredDate,FiredDate 
Waitress,16-06-01 12:40:02,16-06-13 11:43:12 
Chef,16-04-17 15:00:59,16-04-18 15:00:59 

現在の日付形式(POSIXlt)とFiredDate

例 - データセット:私は以下のいくつかの例や情報を含めました、私は日付の書式を欲しい

"%y-%m-%d %H:%M:%S" 

HireDateFiredDateの値は、

"%Y-%m-%d %H:%M:%S"/2016-06-01 12:40:02 
原則として

または

"%Y/%m/%d %H:%M:%S"/2016/06/01 12:40:02 
+0

POSIXltには特定の日付形式がありません。 POSIXltベクトルを印刷すると、特定の形式がタイムスタンプを文字に変換して印刷されます。 'format()'で文字のフォーマットを制御できます。 – Stibu

+0

私は以下を変換しようとしました: 1.潤滑剤パッケージからymd()を使用して日付を適切な形式に変換してください|||||||||||| 2.私のカラムをdate.classに変換しますが、私の時間は失われます。 |||||||||||| 3.何らかの理由でPOSIXctを使用しようとしています||||||||||| 基本的に、私はstrftimeのようなものを使用しようとはしていませんが、他の例を見つけるのは非常に難しいです。 * – BrahminXy

答えて

1

、あなたはstrftime関数を使用して例えば、日付と時刻を変換することができます:

あなたのケースでは
d <- "2016-06-01 12:40:02" 
    strftime(d, format="%Y/%m/%d %H:%M:%S") 
    [1] "2016/06/01 12:40:02" 

、今年はトラブルの原因になっている:

d <- "16-06-01 12:40:02" 
    strftime(d, format="%Y/%m/%d %H:%M:%S") 
    [1] "0016/06/01 12:40:02" 

Dave2eが示唆したように、2桁の年は%yで読み取ることができます。

strftime(d, format="%y/%m/%d %H:%M:%S") 
    [1] "16/06/01 12:40:02" 

あなたのデータは20st、21世紀から来て、あなたがHIREDATEとFireDateの前に19または20を貼り付けることができますと仮定すると:

current <- 16 
    prefixHire <- ifelse(substr(data$HireDate, 1, 2)<=currentYear,20,19) 
    prefixFire <- ifelse(substr(data$FireDate, 1, 2)<=currentYear,20,19) 
    data$HireDate = paste(prefixHire, data$HireDate, sep="") 
    data$FireDate = paste(prefixFire, data$FireDate, sep="") 

コードが今年からその任意の日付を想定してプレフィックスを生成し、現在の('16)よりも大きいのは実際には20世紀のものです。プレフィックスはHireDateとFireDateに貼り付けられます。

+0

これは非常にうまくいきました。部分文字列を使用したifelse構造は、将来の操作のために気をつけなければならないものです。ありがとう、よい一日を。 – BrahminXy

+0

2桁の年と4桁の年の%Yを読み取るのに%yを使用します。 %yを使用する場合 - 世紀のない年(00-99)。入力時には、値00〜68の前に20が、69〜99に19が付いています – Dave2e

関連する問題