Problems with dplyr and POSIXlt data

Slavka picture Slavka · May 5, 2015 · Viewed 23.3k times · Source

I have a problem. I downloaded data and tranformed dates into POSIXlt format

df<-read.csv("007.csv", header=T, sep=";")
df$transaction_date<-strptime(df$transaction_date, "%d.%m.%Y")
df$install_date<-strptime(df$install_date, "%d.%m.%Y")
df$days<- as.numeric(difftime(df$transaction_date,df$install_date, units = "days"))

Data frame is about transaction in one online game. It contains value (its payment), transaction_date, intall_date and ID. I added new column, which showndays after installation. I tried to summarise data using dlyr

df2<-df %>% group_by(days) %>% summarise(sum=sum(value))

And I've got an error: Error: column 'transaction_date' has unsupported type : POSIXlt, POSIXt

How can i Fix it?

UPD. I changed classes of Date columns into Character. It solved problem. But can i use dlyr withouts changing classes in my dataset?

Answer

JackStat picture JackStat · Nov 17, 2016

You could use as.POSIXct as recommended in the comments but if the hours, minutes, and seconds don't matter then you should just use as.Date

df <- read.csv("007.csv", header=T, sep=";")

df2 <- df %>%
  mutate(
     transaction_date = as.Date(transaction_date, "%d.%m.%Y")
     ,install_date = as.Date(install_date, "%d.%m.%Y")
  ) %>%
  group_by(days = transaction_date - install_date) %>%
  summarise(sum=sum(value))