2015-11-06 91 views
0

我有一个庞大的数据集,其中包含访问超市的客户信息。我为每位客户提供唯一的客户编号,客户可以多次返回超市。我想为每个客户ID创建功能选择,以便我可以筛选出客户访问超级市场的​​次数。根据不同表格的行值创建多列

我有一个表与组列TripTypeVisitNoUpcWeekday等 的我创建了一个表,并将其转换为一个数据帧,以计算频率。现在,我想创建每个客户ID的多个列,并且有两次以上的访问,并且列车数据集中至少有6000个这样的变量。

head(train,6) 
TripType VisitNo Upc 
    40  5  1100 
    30  7  1101 
    20  9  1101 
    20  11  1102 
    10  13  1103 
    5  15  1102 

客户的唯一ID是Upc。客户1101,1102已经访问了两次。

df <- data.frame(table(train$Upc)) 
head(df,4) 
Var1 Freq 
1101 1 
1101 2 
1102 2 
1103 1 

现在,我想在我的训练数据集的变量,其频率大于2 SO我所需的输出是(功能的重新设计)

TripType VisitNo Upc 1101 1102 
40  5  1100 0  0 
30  7  1101 1  0 
20  9  1101 1  0 
20  11  1102 0  1 
10  13  1103 0  0 
    5  15  1102 0  1 

有正义的来创建列手动创建列的功能过多。任何帮助是极大的赞赏。谢谢。

回答

1

我有一个部分解决方案。希望它至少能以某种方式帮助你,尤其是考虑到没有人回答的事实。

r<-as.vector(subset(data.frame(table(train$Upc)), Freq>=2)[,1]) 
#selects relevant customers id in one vector. 
#If greater than 2 needed remove equal sign in Freq>=2 

train[,r] <- NA 
#creates columns with selected IDs in the data frame 

train[,4]<-train$Upc==colnames(train)[4] 
# 4 is the number of columns in your original data frame +1 

最后一行将按照您希望为第一个选定的客户引入数据。在这一点上,我没有任何其他的解决方案,而是用5,6等手动更改最后一行中的4s。为后续客户。我知道如果你有很多人,这不是最理想的。一个函数应该解决它,但我无法弄清楚。但我认为你可以从这里选择并询问另一个可能希望得到回答的问题。

相关问题