【问题标题】:How to import this date format in R如何在 R 中导入此日期格式
【发布时间】:2014-03-13 06:57:11
【问题描述】:
我在 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 中将其作为日期读取。目前它认为这是一个因素。
【问题讨论】:
标签:
r
date
datetime
formatting
【解决方案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
或者,如果您的文件中只有 1 列,您可以使用 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('.....')
【解决方案2】:
这取决于每一行是一个因素,还是每行是三个因素,所以您可能需要尝试我在下面提出的解决方案。提示:最好将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")