4

我正在使用R中标记为“mydata”的数据框。第一列,标记为“ts”,包含 unix 时间戳字段。我想将这些字段转换为星期几。

我试过使用 strptime 和 POSIXct 函数,但我不确定如何正确执行它们:

> strptime(ts, "%w")

--返回此错误:

“as.character(x) 中的错误:无法将类型‘闭包’强制转换为‘字符’类型的向量”

我也只是尝试使用 POSIXct 将其转换为人类可读的格式:

as.Date(as.POSIXct(ts, origin="1970-01-01"))

--返回此错误:

“as.POSIXct.default(ts, origin = "1970-01-01") 中的错误:不知道如何将“ts”转换为“POSIXct”类”

更新:这最终为我工作:

> mydata$ts <- as.Date(mydata$ts)

然后

> mydata$ts <- strftime( mydata$ts , "%w" )
4

1 回答 1

9

无需一路走到strftimewhenPOSIXlt直接给你这个,然后strftime调用as.POSIXlt.

wday <- function(x) as.POSIXlt(x)$wday

wday(Sys.time()) # Today is Sunday
## [1] 0

如果你想要字符而不是数字输出,还有这个weekdays功能:

weekdays(Sys.time())
## [1] "Sunday"
于 2013-06-09T13:49:38.310 回答