根据数据月数的标准过滤行

时间:2016-08-19 22:20:52

标签: r posixlt

我有一个类似下面的数据框:

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,但得到相同的错误。任何建议将不胜感激!

1 个答案:

答案 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)))