10
votes

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?

2
Your data is not numeric, but probably factors. This is likely a problem that should be solved during data import. - Roland

2 Answers

10
votes

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")
5
votes

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.