我有个问题.我下载了数据并将日期转换为POSIXlt格式
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"))
Run Code Online (Sandbox Code Playgroud)
数据框是关于一个在线游戏中的交易.它包含值(支付),transaction_date,intall_date和ID.我添加了新列,安装后显示.我试图使用dlyr汇总数据
df2<-df %>%
group_by(days) %>%
summarise(sum=sum(value))
我有一个错误:错误:列'transaction_date'具有不受支持的类型:POSIXlt,POSIXt
我该如何解决?
UPD.我将Date列的类更改为Character.它解决了问题.但是我可以使用dlyr而不更改我的数据集中的类吗?
Jac*_*tat 13
您可以as.POSIXct按照评论中的建议使用,但如果小时,分钟和秒无关紧要,那么您应该使用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))
Run Code Online (Sandbox Code Playgroud)
如前所述这里,这是一个在tidyverse的“功能”。他们不想处理POSIXlt对象,因为它是向量中的某种列表。但是,使用as.POSIXct并不总是一种选择。就我而言,我确实需要POSIXlt该类来处理一些未清除的数据。在这种情况下,只需回到良好的旧稳定基数R。
df2 <- aggregate(df1$value, by=list(df$days), sum)
Run Code Online (Sandbox Code Playgroud)