2017-12-06 7 views
0

に変換します。私のorderdateはfactorで、mm/dd/yy形式からYYYY-MM-DD形式に変換します。フォーマットのm/d/yyをYYYY-MM-DDの形式でR

orderdate : Factor w/ 155932 levels "1/1/2017 1:05:00 AM",..: 41 1 1 89 100 102 106 107 119 122 ... 

私は物事のカップルを試みた:

orders2017$newdate <- (factor(orders2017$orderdate)) 
orders2017$newdate1 <- as.Date(orders2017$newdate,format="%Y-%m-%d") 

を何も出て作業していないと私は空のように新しい列を与えています。どんな助けもあります

答えて

2

実際に値が"1/1/2017 1:05:00 AM"の場合は日付ではなく、日付時刻なので、日付と時刻の両方の書式文字を指定する必要があります。

だから、最初の日付時刻のすべての部分を指定することにより、Rのような理解形態(例えばPOSIXct)にあなたの日付時刻を取得する必要があります:あなたが精通していない場合

test <- as.POSIXct("1/1/2017 1:05:00 AM", format = '%m/%d/%Y %I:%M:%S %p') 
test 

> test 
[1] "2017-01-01 01:05:00 CST" 

?strftimeを参照してください。上で使用されているすべての書式設定プレースホルダを使用し、使用する条件は%I%pです。

次に、あなたが望むの日付形式にPOSIXctベクトルを変換することができ

format(test, format = '%Y-%m-%d') 

> format(test, format = '%Y-%m-%d') 
[1] "2017-01-01" 

あなたのための合併症は、あなたが戻ってそれらを変換する必要があるので、Rは、要因にあなたの文字の日付時刻を変換していることです日付時刻に変換する前に文字のベクトルを返します。例えば、あなたがas.Date(orders2017$newdate,format="%Y-%m-%d")と本当に近かった

orders2017 <- transform(orders2017, 
         orderdate = as.POSIXct(as.character(orderdate), 
               format = '%m/%d/%Y %I:%M:%S %p')) 
orders2017 <- transform(orders2017, 
         newdate = format(orderdate, format = '%Y-%m-%d')) 
1

(あなたは例のデータを提供していなかったとしてテストされていない)、あなただけformat文字列は、あなたの実際の形式に一致させる必要があります。

あなたの実際の形式は、MM/DD/YYYYですので、フォーマット文字列として%m/%d/%Yを使用します。

as.Date("1/1/2017 1:05:00 AM", format = "%m/%d/%Y") 
# [1] "2017-01-01" 

その後Dateフォーマットオブジェクトの既定の印刷が何をしたいです。あなたのデータのためにそう

orders2017$newdate1 <- as.Date(orders2017$newdate,format="%Y/%m/%d") 

時間の部分は、単に無視されます。

+0

Huh!私は 'as.Date()'が余分なビットをすべて無視することは知らなかった。 –

+1

「?strptime」から*「各入力文字列は、指定された書式に対して必要な限り処理されます。末尾の文字は無視されます」* – Gregor

+0

@Gregor Thankyyou so much..It私はまた何を書くべきですか? – jsingh

関連する問題