2016-04-06 19 views
1

我有一個數據幀包含日期爲個字符,dd.mm.yyyy格式。想要轉換日期類中的那些,格式爲yyyy-m-das.date()不工作返回錯誤,不知道如何轉換「日期」上課「日期」chr到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") 

於是,我就代替.new_format_dates下格式化的日期,就像[1] NA NA NA NA

返回結果
+0

a。永遠不要做'data.frame(cbind(...))'。灣你需要正確地設置你的格式,並把你的數據當作字符串,而不是一個因素(除非你設置'stringsAsFactors = FALSE'):'as.Date(as.character(dates $ dates),format =「 %d。%m。%Y「)' – alistaire

+1

@alistaire - 'as.character()'在這裏似乎不重要 - 'as.Date(日期$日期,格式=」%d。%m。%Y 「)'工作正常。 – thelatemail

+0

好奇......'as.Date'是一個功能的大砍刀。我已經傳遞了一些可怕的字符串,它仍然找到了一種方法。 – alistaire

回答

3

首先,讓你的data.frames正確;請勿在data.frame中使用cbind。接下來,將format參數as.Date設置爲您擁有的格式,包括分隔符。如果您不知道您需要的符號,請查看?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