我有一個包含非結構化日期信息的字段的數據集。我試圖將其轉換爲日期,但該字段有兩種形式的日期,一種是am/pm和一種24小時制時鐘。if/ifelse問題
如果我嘗試直接轉換它,它會中斷並顯然給出不正確的答案。
因此,在做了一些檢查之後,我開始了一個簡單的if函數。與AM/PM字段之間的主要區分器是字段的長度,所以我嘗試了以下內容:
dateCheck <- function(x) {
if(nchar(x) > 17) {
strptime(x,"%m/%d/%Y %I:%M %p")
} else {
strptime(x,"%m/%d/%Y %H:%M")
}
}
這wasnt工作,並返回以下錯誤:
the condition has length > 1 and only the first element will be used
經過一番研究,我看到有一些問題,如果使用的功能,我也許應該使用ifelse,並提出了以下幾點:
ifelse(nchar(x) > 17,strptime(x,"%m/%d/%Y %I:%M %p"),strptime(x,"%m/%d/%Y %H:%M"))
這確實與我的數據幀食堂,給我絕對垃圾讀數。 它最近也開始給我下面的錯誤:
Warning messages: 1: In ifelse(nchar(fb2$Date) > 17, strptime(fb2$Date, "%m/%d/%Y %I:%M %p"), : number of items to replace is not a multiple of replacement length 2: In ifelse(nchar(fb2$Date) > 17, strptime(fb2$Date, "%m/%d/%Y %I:%M %p"), : number of items to replace is not a multiple of replacement length
任何想法,我應該怎麼辦?
編輯:樣本數據
The type with the AM/PM
04/20/2015 3:47 pm
04/20/2015 3:32 pm
04/19/2015 12:45 pm
04/18/2015 9:00 pm
04/16/2015 2:52 pm
04/14/2015 4:40 pm
04/14/2015 10:48 am
04/14/2015 10:28 am
The type without
04/11/2015 11:28
04/10/2015 16:12
04/09/2015 16:44
04/08/2015 12:12
04/08/2015 11:38
04/07/2015 12:11
04/05/2015 08:45
這意味着數據的一個例子在一起會是什麼樣子
04/16/2015 2:52 pm
04/14/2015 4:40 pm
04/14/2015 10:48 am
04/14/2015 10:28 am
04/11/2015 11:28
04/10/2015 16:12
04/09/2015 16:44
04/03/2015 08:57
04/02/2015 17:41
04/01/2015 11:44
03/28/2015 12:45 pm
03/28/2015 10:59 am
03/27/2015 4:13 pm
03/23/2015 5:02 pm
03/22/2015 4:06 pm
03/22/2015 1:10 pm
03/21/2015 8:20 am
03/19/2015 10:12 am
03/18/2015 1:41 pm
03/17/2015 1:41 pm
03/13/2015 4:03 pm
03/12/2015 15:19
03/12/2015 11:05
03/11/2015 16:12
03/11/2015 09:46
03/08/2015 19:29
你能提供一些樣本數據嗎?另外,在你的'ifelse'語句中,第一個'strptime'包含'/%d#',第二個包含'/%d'。你有意這麼做嗎? –
'sapply(original_vector,dateCheck)'應該可以工作,但'ifelse'應該也有。正如約翰所說,我們需要數據。 – hrbrmstr
示例數據爲:「04/14/2015 10:28 am」爲一種類型,「04/11/2015 11:28:00」爲另一種 – Meeckah