我有一个类似下面的数据框:
DF
Device_No Consumer.Account.Id Transaction_Date Transaction.Amount Transaction.Liter TXT_Month
1 1100110065 1.01014e+11 2014-01-02 13:04:45 0.09 0.3 1
2 1100110071 1.01014e+11 2014-01-03 20:53:58 0.39 1.3 1
3 1100110071 1.01014e+11 2014-01-04 18:08:39 0.06 0.2 1
4 1100110071 1.01014e+11 2014-01-04 18:10:37 1.62 5.4 1
5 1100110071 1.01014e+11 2014-01-04 23:23:04 0.42 1.4 1
6 1100110071 1.01014e+11 2014-01-05 09:47:17 0.63 2.1 1
7 1100110071 1.01014e+11 2014-01-05 15:27:02 0.57 1.9 1
8 1100110071 1.01014e+11 2014-01-08 11:30:20 0.63 2.1 1
9 1100110071 1.01014e+11 2014-01-08 16:42:27 0.72 2.4 1
10 1100110071 1.01014e+11 2014-01-12 15:21:06 0.00 0.0 1
我有大约800个客户ID,每个客户的信息量各不相同。我想过滤掉信息超过10个月的客户。我的计划是使用DPLYR按HH_id分组,然后计算每个客户的唯一月数。从那里,我可以轻松筛选出具有> 10个月信息的客户。
我试过了:
df_sum<-mutate(df,"TXT_Month"=month(Transaction_Date)%>%
group_by(df,Consumer.Account.Id)%>%
summarise("no_months"==length(unique(TXT_Month))
但得到错误
"Error in eval(expr, envir, enclos) :
column 'Transaction_Date' has unsupported type : POSIXlt, POSIXt"
我已尝试将Transaction_Date格式化为.numeric和as.character,但得到相同的错误。任何建议将不胜感激!
答案 0 :(得分:0)
我将其追溯到日期格式: 我将日期格式化为:
sg_data$Transaction_Date<-strptime(sg_data$Transaction.Date,"%d-%b-%Y %H:%M:%S")
但将其更改为POSIXct日期时可以使用
summarise("no_month"=length(unique(TXT_Month)))