我将日期和时间戳记作为字符变量
"2018-12-13 11:00:01 EST" "2018-10-23 22:00:01 EDT" "2018-11-03 14:15:00 EDT" "2018-10-04 19:30:00 EDT" "2018-11-10 17:15:31 EST" "2018-10-05 13:30:00 EDT"
如何从此字符向量中去除时间?
PS:有人可以帮忙吗?我尝试使用strptime
,但结果是获得NA
值
答案 0 :(得分:1)
不清楚是要日期还是时间,但是如果要日期,as.Date
会忽略日期之后的任何垃圾,因此:
x <- c("2018-12-13 11:00:01 EST", "2018-10-23 22:00:01 EDT")
as.Date(x)
## [1] "2018-12-13" "2018-10-23"
从输入向量Date
中获得x
向量就足够了。不使用任何软件包。
如果您想要时间,那么:
read.table(text = x, as.is = TRUE)[[2]]
## [1] "11:00:01" "22:00:01"
如果您希望每个部分的数据框都在单独的列中,则:
read.table(text = x, as.is = TRUE, col.names = c("date", "time", "tz"))
## date time tz
## 1 2018-12-13 11:00:01 EST
## 2 2018-10-23 22:00:01 EDT
答案 1 :(得分:1)
我认为OP希望从日期时间变量中提取时间(按问题标题)。
x <- "2018-12-13 11:00:01 EST"
as.character(strptime(x, "%Y-%m-%d %H:%M:%S"), "%H:%M:%S")
[1] "11:00:01"
另一个选择:
library(lubridate)
format(ymd_hms(x, tz = "EST"), "%H:%M:%S")
[1] "11:00:01"
答案 2 :(得分:0)
lubridate
软件包使一切变得如此简单:
library(lubridate)
x <- "2018-12-13 11:00:01 EST"
as_date(ymd_hms(x))
答案 3 :(得分:0)
您可以使用as.Date
函数并指定格式
> as.Date("2018-12-13 11:00:01 EST", format="%Y-%m-%d")
[1] "2018-12-13"
如果所有值都在向量中:
x = c("2018-12-13 11:00:01 EST", "2018-10-23 22:00:01 EDT",
"2018-11-03 14:15:00 EDT", "2018-10-04 19:30:00 EDT",
"2018-11-10 17:15:31 EST", "2018-10-05 13:30:00 EDT")
> as.Date(x, format="%Y-%m-%d")
[1] "2018-12-13" "2018-10-23" "2018-11-03" "2018-10-04" "2018-11-10"
[6] "2018-10-05"