2016-04-06 21 views
1

karakterleri, dd.mm.yyyy biçimindeki tarihleri ​​içeren bir veri çerçevem ​​var. tarih sınıfındakileri dönüştürmek istiyorum, yyyy-m-d biçiminde. as.date() dönen hatayı çalışmıyor, chr - date class in 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") 

yüzden [1] NA NA NA NA

gibi bir sonuç döndürür . değiştirip new_format_dates altındakiler tarihleri ​​yeniden biçimlendirir çalıştı sınıfa “Tarih” 'büyük' ​​dönüştürmek için nasıl bilmiyorum
+0

a. Asla, asla 'data.frame (cbind (...))' yapmayın. b. Formatınızı doğru bir şekilde ayarlamalısınız ve verilerinizi string olarak ele almalısınız, bir faktör değil ('stringAsFactors = FALSE' değerini ayarlamadığınız sürece): 'as.Date (as.character (tarihler $ tarihler), format =" % d.% m.% Y ") – alistaire

+1

@alistaire -' as.character() 'burada önemli görünmüyor -' as.Date (tarihler $ tarih, biçim = "% d.% m.% Y ") iyi çalışıyor. – thelatemail

+0

Meraklı ... 'as.Date' bir fonksiyonun paladır. Bazı korkunç ipleri geçtim ve hala bir yolunu buluyor. – alistaire

cevap

3

Öncelikle, data.frames'ınızı düzgün bir şekilde yapın; cbind'u data.frame'da kullanmayın. Ardından, as.Date'un format argümanını, ayırıcılar dahil olmak üzere sahip olduğunuz biçime ayarlayın. İhtiyacınız olan sembolü bilmiyorsanız, ?strptime'a bakın.

a
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

Bu gerçekten harika. Hatalarımı daha önce anladım ve bahşiş için büyük teşekkürler, 'cbind', bunu aklımda tutacağım. –

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

Daha iyi değil. Görebilmen için yayınlayacağım. – alistaire

+0

İyi gönderi. Artı bir – akrun