2016-04-06 23 views
1

日付が文字,dd.mm.yyyyのデータフレームがあります。日付クラスのものを変換するには、フォーマットyyyy-m-dを使用してください。 as.date()が返すエラーが動作していない、chr to Rクラスのクラス

dates <- data.frame(cbind(c("5.1.2015", "6.1.2014", "17.2.2014", "28.10.2014"))) 
colnames(dates) <- c("dates") 
as.Date(dates, format = "%Y-%m-%d") 

new_format_dates <- cbind(gsub("[[:punct:]]", "", dates[1:nrow(dates),1])) 
as.Date(new_format_dates, format = "%Y-%m-%d") 

は、だから私は[1] NA NA NA NA

のような結果を返す、 .を交換し、 new_format_datesの下でこれらの日付を再フォーマットしようとしたクラスに「日付」を「日付」に変換する方法がわかりません
+0

a。絶対に、決して 'data.frame(cbind(...))'をしないでください。 b。 'stringsAsFactors = FALSE'を設定しない限り、あなたのフォーマットを正しく設定し、データを文字列として扱う必要があります(' stringsAsFactors = FALSE'を設定しない限りそうなります): 'as.Date(as.character(dates $ dates)、format =" %d。%m。%Y ")' – alistaire

+1

@alistaire - 'as.character()'はここでは重要ではないようです - as.Date(dates $ dates、format = "%d。%m。%Y ")'うまく動作します。 – thelatemail

+0

好奇心... 'as.Date'は関数のマシェットです。私はそれをいくつかの恐ろしい弦に通しました。そしてそれはまだ方法を見つけます。 – alistaire

答えて

3

まず、data.framesを適切に作成します。 data.framecbindを使用しないでください。次に、as.Dateformat引数をセパレータを含めて、取得した形式に設定します。必要なシンボルがわからない場合は、?strptimeをご覧ください。

dates <- data.frame(dates = c("5.1.2015", "6.1.2014", "17.2.2014", "28.10.2014")) 
dates$dates_new <- as.Date(dates$dates, format = "%d.%m.%Y") 
dates 
#  dates dates_new 
# 1 5.1.2015 2015-01-05 
# 2 6.1.2014 2014-01-06 
# 3 17.2.2014 2014-02-17 
# 4 28.10.2014 2014-10-28 
+0

それは本当に素晴らしいです。私は以前の間違いを理解していますし、チップのための大きな感謝、「cbind」、私はそれを念頭に置くでしょう。 –

1
dates <- data.frame(cbind(c("5.1.2015", "6.1.2014", "17.2.2014", "28.10.2014"))) 
colnames(dates) <- c("dates") 

dates$new_Dates <- gsub("[.]","-",dates$dates) 
dates$dates <- NULL 
dates_new <- as.Date(dates$new_Dates, format = "%d-%m-%Y") 

dates_new <- data.frame(dates_new) 
print(dates_new) 
+0

これ以上はありません。私はちょうどあなたが見ることができるように投稿します。 – alistaire

+0

良い投稿です。プラスワン – akrun