我在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中将其作为日期阅读。目前,它将此视为因素。
答案 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")