Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

character string is not in a standard unambiguous format

Tags:

r

I have a dataframe (df3) with with some values.

One of these values is the daedlines.

The data of this value is something like the following:

deadline
1419397140
1418994978
1419984000
1418702400

They are days and I want to convert the to using this:

df3$deadline <- as.POSIXct(df3$deadline, origin="1970-01-01")

Generally it was worked for me with other dataframes from other files.

However with this it gives me back this error:

Error in as.POSIXlt.character(as.character(x), ...) : 
  character string is not in a standard unambiguous format

How can I fix it?

like image 932
Polya Avatar asked May 07 '15 15:05

Polya


People also ask

How do you fix character string is not in a standard unambiguous format?

This error usually occurs when you attempt to convert an object in R to a date format, but the object is currently either a character or factor. To fix this error, you must first convert the object to numeric.

What is not in a standard unambiguous format?

The character string is not in a standard unambiguous format is a problem that can occur when changing date format using the posixct function. It occurs when converting numeric dates to calendar dates. It is not a problem caused by leading zeros but by using the wrong format in your numeric date.

How do I change character to time in R?

We can convert the character to timestamp by using strptime() method. strptime() function in R Language is used to parse the given representation of date and time with the given template.


2 Answers

It might be that you have a character or factor, and it's expecting a numeric vector for conversion from unix time :

as.POSIXct(as.numeric(as.character(df3$deadline)),origin="1970-01-01")
like image 128
scoa Avatar answered Sep 30 '22 06:09

scoa


As a suggestion for future debugging, you can check your parameter type by using

class(df3$deadline) 

and making sure you are passing the correct type to as.POSIXlt().

From the help menu for asPOSIX*():

Character input is first converted to class '"POSIXlt"' by 'strptime': numeric input is first converted to '"POSIXct"'. Any conversion that needs to go between the two date-time classes requires a time zone: conversion from '"POSIXlt"' to '"POSIXct"' will validate times in the selected time zone.

like image 39
penguin2718 Avatar answered Sep 30 '22 05:09

penguin2718