[英]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理解的实际日期类,如Date
或POSIXlt
。 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.