如何在R中导入此日期格式

时间:2014-03-13 06:57:11

标签: r date datetime formatting

我在csv文件中记录的时间如下:

2/12/2014  3:57:31 PM
14/02/2014 8:06:27 AM
18/02/2014 3:38:42 AM
18/02/2014 6:06:47 AM
18/02/2014 5:37:48 PM
19/02/2014 3:44:14 PM

我如何在R中将其作为日期阅读。目前,它将此视为因素。

2 个答案:

答案 0 :(得分:1)

我建议您阅读read.table的帮助,特别是参数stringsAsFactors。 您必须将数据读作character,然后将其转换为POSIXct时间等级

dat <- read.csv(text='2/12/2014  3:57:31 PM
14/02/2014 8:06:27 AM
18/02/2014 3:38:42 AM
18/02/2014 6:06:47 AM
18/02/2014 5:37:48 PM
19/02/2014 3:44:14 PM', stringsAsFactor = FALSE, header=FALSE)



dat$V1 <- as.POSIXct(dat$V1, format = "%d/%m/%Y %I:%M:%S %p")

dat
##                    V1
## 1 2014-12-02 15:57:31
## 2 2014-02-14 08:06:27
## 3 2014-02-18 03:38:42
## 4 2014-02-18 06:06:47
## 5 2014-02-18 17:37:48
## 6 2014-02-19 15:44:14

或者,如果文件中只有一列

,则可以使用scan功能
dat <- as.POSIXct(scan(file = textConnection("2/12/2014  3:57:31 PM\n14/02/2014 8:06:27 AM\n18/02/2014 3:38:42 AM\n18/02/2014 6:06:47 AM\n18/02/2014 5:37:48 PM\n19/02/2014 3:44:14 PM"), 
    what = character(), sep = "\n"), format = "%d/%m/%Y %I:%M:%S %p")
## Read 6 items

dat
## [1] "2014-12-02 15:57:31 MYT" "2014-02-14 08:06:27 MYT" "2014-02-18 03:38:42 MYT" "2014-02-18 06:06:47 MYT"
## [5] "2014-02-18 17:37:48 MYT" "2014-02-19 15:44:14 MYT"

您可以将textConnection('.....')替换为文件名

答案 1 :(得分:0)

这取决于每一行是一个因素,还是每一行是三个因素,所以你可能需要使用我在下面提出的解决方案。提示:最好向我们提供dput()的输出,因此我们知道完全您正在使用的内容。

foo <- scan(, what="",sep="#")
2/12/2014  3:57:31 PM
14/02/2014 8:06:27 AM
18/02/2014 3:38:42 AM
18/02/2014 6:06:47 AM
18/02/2014 5:37:48 PM
19/02/2014 3:44:14 PM

foo
as.Date(sapply(strsplit(foo," "),"[",1),format="%d/%m/%Y")