R 在大数据集中查找值的共现
我有一个包含月份、客户ID和门店ID的大型数据集。每个客户、每个地点、每个月都有一条记录,总结他们在该地点的活动R 在大数据集中查找值的共现,r,sparse-matrix,R,Sparse Matrix,我有一个包含月份、客户ID和门店ID的大型数据集。每个客户、每个地点、每个月都有一条记录,总结他们在该地点的活动 Month Customer ID Store Jan 1 A Jan 4 A Jan 2 A Jan 3 A Feb 7 B Feb 2 B Feb 1 B Feb 12
Month Customer ID Store
Jan 1 A
Jan 4 A
Jan 2 A
Jan 3 A
Feb 7 B
Feb 2 B
Feb 1 B
Feb 12 B
Mar 1 C
Mar 11 C
Mar 3 C
Mar 12 C
我感兴趣的是创建一个矩阵,显示每个地点与其他地点共享的客户数量。像这样:
A B C
A 4 2 2
B 2 4 2
C 2 2 4
例如,由于客户在下个月访问了A店,然后又访问了B店,因此他们将被添加到盘点中。我感兴趣的是共享客户的数量,而不是访问量
我在这个线程()中尝试了稀疏矩阵方法,但返回的数字不匹配,原因是我无法理解
任何想法都将不胜感激 更新:
我发布的原始解决方案适用于您的数据。但你的数据有问题
不寻常的财产,没有客户访问过同一商店在两个不同的地方
月。假定会发生这种情况,需要进行修改
我们需要的是一个按客户划分的门店矩阵,如果客户曾经
参观了商店,否则归零。使用的原始解决方案M=as.matrix(表(Dat$ID\u商店,Dat$Customer))
它给出了每个客户访问该商店的不同月份。具有 不同的数据,这些数字可能不止一个。我们可以使用
M=as.matrix(表(Dat$ID\u存储,Dat$Customer)>0)
如果你看这个矩阵,它会说TRUE和FALSE,但是因为TRUE=1和FALSE=0 那就行了。因此,完全正确的解决方案是:
M = as.matrix(table(Dat$ID_Store, Dat$Customer) > 0)
M %*% t(M)
A B C
A 4 2 2
B 2 4 2
C 2 2 4
更新:
我发布的原始解决方案适用于您的数据。但你的数据有问题
不寻常的财产,没有客户访问过同一商店在两个不同的地方
月。假定会发生这种情况,需要进行修改
我们需要的是一个按客户划分的门店矩阵,如果客户曾经
参观了商店,否则归零。使用的原始解决方案M=as.matrix(表(Dat$ID\u商店,Dat$Customer))
它给出了每个客户访问该商店的不同月份。具有 不同的数据,这些数字可能不止一个。我们可以使用
M=as.matrix(表(Dat$ID\u存储,Dat$Customer)>0)
如果你看这个矩阵,它会说TRUE和FALSE,但是因为TRUE=1和FALSE=0 那就行了。因此,完全正确的解决方案是:
M = as.matrix(table(Dat$ID_Store, Dat$Customer) > 0)
M %*% t(M)
A B C
A 4 2 2
B 2 4 2
C 2 2 4
我们也可以试试这个:
library(reshape2)
df <- dcast(df,CustomerID~Store, length, value.var='Store')
# CustomerID A B C
#1 1 1 1 1
#2 2 1 1 0 # Customer 2 went to stores A,B but not to C
#3 3 1 0 1
#4 4 1 0 0
#5 7 0 1 0
#6 11 0 0 1
#7 12 0 1 1
crossprod(as.matrix(df[-1]))
# A B C
#A 4 2 2
#B 2 4 2
#C 2 2 4
我们也可以试试这个:
library(reshape2)
df <- dcast(df,CustomerID~Store, length, value.var='Store')
# CustomerID A B C
#1 1 1 1 1
#2 2 1 1 0 # Customer 2 went to stores A,B but not to C
#3 3 1 0 1
#4 4 1 0 0
#5 7 0 1 0
#6 11 0 0 1
#7 12 0 1 1
crossprod(as.matrix(df[-1]))
# A B C
#A 4 2 2
#B 2 4 2
#C 2 2 4
嗨,桑迪潘。阿鲁莱斯图书馆是否也可用于计算这些客户在其他地点的活动。例如,如果我有一个“购买的沐浴产品数量”栏和另一个“户外产品数量”栏,我可以对我们最初创建的矩阵中发生的活动求和吗?也就是说,如果属于A店的顾客去了B店,我们能总结一下他们在那里的活动吗?嗨,桑迪潘。阿鲁莱斯图书馆是否也可用于计算这些客户在其他地点的活动。例如,如果我有一个“购买的沐浴产品数量”栏和另一个“户外产品数量”栏,我可以对我们最初创建的矩阵中发生的活动求和吗?也就是说,如果属于A店的客户去了B店,我们可以总结一下他们在那里的活动吗?