2016-11-13 44 views
0

我正在嘗試使用已加載到R的csv文件進行一些分析。我正在通過測試[[3]] [[1]]執行以下操作來訪問特定值例如,以獲得特定的值:如何在R中使用POSIXlt

test <- read.csv(file = "test.csv") 
test <- data.frame(lapply(test, as.character), stringsAsFactors=FALSE) 

否則我會得到這樣的事情:

> chicago[[3]][[1]] 
[1] 08/02/2002 11:00:00 AM 
19747 Levels: 01/01/2001 03:49:00 AM 01/01/2001 06:17:00 PM 01/01/2001 12:00:00 AM ... 12/31/2015 11:46:00 AM 

由於一列被保存日期,我將其轉換爲POSIXlt。

test[[3]] <- strptime(test[[3]], format='%m/%d/%Y %I:%M:%S %p') 

的值現在被改變爲預期的,例如:

01/28/2004 06:30:00 PM -> 2004-01-28 18:30:00 

正在嘗試訪問值,我意識到雖然,對於示例性測試[[3]] [[1]]沒有給出具體的日期 - 而是我得到一個列表,其中包含每一行的每一秒。

測試一下,我發現POSIXit類型有點「不同」;這意味着上述值似乎是某種形式的名單,是這樣的:

> unlist(unclass(value)) 
    sec min hour mday mon year wday yday isdst zone gmtoff 
    "0" "0" "11" "2" "7" "102" "5" "213" "1" "CEST"  NA 

所以我的問題是:有沒有辦法讓像「2004-01-28 18:30:00」,而不是值關於整個列的列表?

+0

是否有一個特定的理由使用'POSIXlt'而不是'POSIXct'(我更喜歡日期時間)? – Uwe

回答

2

你讓你的生活太難了。您可以對整個列解析日期或日期時間。不需要lapply

你(一般)不想POSIXlt表示。看看現有的軟件包,例如我的(相對較新的)anytime軟件包(也是on CRAN),它甚至可以從factor轉換爲您 - 並且不需要顯式格式字符串,原始值或其他保留。

但是,由於您的帖子不包含reproducible example我不能幫助更具體的步驟。