繁体   English   中英

R返回NA的strptime

[英]strptime in R returning NA

我的数据集中有一个名为timestamp的变量,它是一种形式。 MYDATA $时间戳

2013-08-01 12:00:00 2013-08-01 12:00:00 2013-08-01 12:00:00

我想修改它们并将它们更改为仅dd-mm-yy格式的dates<-strptime(mydata$timestamp, format="%d:%m:%y")打印日期仅产生NA。 不知道为什么。

有人可以帮忙吗?

提前致谢

帕斯卡的回答是正确的,但是我要补充一点,因为对他的所有应有的尊重,我认为你需要意识到你所犯的错误,所以你将来不会做出这些错误。

在某些编程语言中,有内部日期具有关联的格式,您可以更改该格式而不更改日期的内部表示。 这就是为什么你像问题那样提出问题的原因,但这不是R的工作方式。 在R中,您可以将日期表示为字符串或R理解的实际日期类,如DatePOSIXlt R理解的类没有与之关联的任何特定输出格式。

您的输入数据似乎是日期的字符串表示形式。 您似乎希望它以不同的字符串表示形式出现。 strptime()将从字符串更改为POSIXlt但此数据类型不会以某种方式格式化。 如果要将其重新转换为字符串,则需要使用其他命令。 在Pascal的例子中,该函数是format()

好的,所以你想使用strptime()把它变成一个R日期然后用format()把它变成一个字符串。 很好,但你必须有正确的论点。 strptime()的第二个参数是一组字符,用于通知函数当前格式是什么。 您的参数"%d:%m:%y"与您的数据远不相似。 这就是获得NA的原因。 正如Pascal指出的那样,正确的格式是"%Y-%m-%d %H:%M:%S" 检查strptime()的帮助文件,看看格式化字符串中的符号是什么意思。

我个人避免strptime()做的所有本地时间的东西,只使用R的基本Date()类。 我的解决方案是

dates <- format(as.Date(mydata$timestamp,format="%Y-%m-%d %H:%M:%S"),format="%d-%m-%y")

请注意, as.Date()中的format参数通知函数传入的数据格式是什么, format()format参数告诉它你想要的传出格式是什么。

如果你想要dd-mm-yy格式,你需要format(mydata$timestamp, "%d-%m-%y") 例如:

x <- strptime(c("2006-01-08 10:07:52", "2006-08-07 19:33:02"), "%Y-%m-%d %H:%M:%S", tz = "EST5EDT")
[1] "2006-01-08 10:07:52 EST" "2006-08-07 19:33:02 EDT"

format(x, "%d-%m-%y")
[1] "08-01-06" "07-08-06"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM