使用 DataFrame 时 Strptime 失败

Strptime fails when working with a dataframe

提问人:Robert Hadow 提问时间:1/5/2019 更新时间:1/5/2019 访问量:165

问:

在这种情况下,Strptime 似乎缺少一些东西:

aDateInPOSIXct <- strptime("2018-12-31", format = "%Y-%m-%d")
someText <- "asdf"
df <- data.frame(aDateInPOSIXct, someText, stringsAsFactors = FALSE)
bDateInPOSIXct <- strptime("2019-01-01", format = "%Y-%m-%d")

df[1,1] <- bDateInPOSIXct

将 bDate 分配给数据帧失败,并显示:

as 中的错误。POSIXct.numeric(value) : 'origin' 必须提供

并警告:

提供了 11 个变量来替换 1 个变量

我想同时使用 POSIXct 日期和 POSIXct 日期时间来比较这个和那个。这比操作字符串的工作量要少得多,而且 POSIX 可以解决时区问题。不幸的是,我错过了一些东西。

r posix strptime

评论


答:

0赞 Tim Biegeleisen 1/5/2019 #1

您只需要将调用转换为显式:strptimePOSIXct

aDateInPOSIXct <- as.POSIXct(strptime("2018-12-31", format = "%Y-%m-%d"))
someText <- "asdf"
df <- data.frame(aDateInPOSIXct, someText, stringsAsFactors = FALSE)
bDateInPOSIXct <- as.POSIXct(strptime("2019-01-01", format = "%Y-%m-%d"))

df[1,1] <- bDateInPOSIXct

查看 R 文档,其中指出:

字符输入首先通过 strptime 转换为类“POSIXlt”:数字输入首先转换为“POSIXct”。

评论

0赞 Robert Hadow 1/5/2019
看在天堂的份上!我依赖于 strptime 的文档,其中说,“strptime 将字符表示转换为类”POSIXlt“的对象。我不知道转换需要捎带两个功能。非常感谢你,蒂姆。
0赞 Robert Hadow 1/5/2019
是的,它工作正常。str(df) 没有明显的差异,所以这些知识对我很有帮助。