R 两个参数的所有组合的频率
我有一个用户和产品的数据集R 两个参数的所有组合的频率,r,R,我有一个用户和产品的数据集 user product a X a Y a Z b Z c Y c Z ... 我想从中列出所有产品的成对组合以及拥有该特定组合的用户频率,例如 product_1 product_2 N X Y 1 <- user a X Z 1 <
user product
a X
a Y
a Z
b Z
c Y
c Z
...
我想从中列出所有产品的成对组合以及拥有该特定组合的用户频率,例如
product_1 product_2 N
X Y 1 <- user a
X Z 1 <- user a
Y Z 2 <- users a,c
...
但是,当我实现了一个丑陋的for
-循环来迭代组合并从原始数据集中获取信息时,它永远不会完成(实际数据约为1k个产品和500k个用户,总共2500万行)
您将使用什么策略来实现这一点
编辑
添加了一列数据以使事情更清楚。结果应该统计同时拥有产品1和产品2的用户数量(即使他们也拥有其他产品)。
DFDFDFDFDF使用@Roland的DF对象,您也可以这样做
tt<-with(DF, table(user,product))
tt<-crossprod(tt)
tt[upper.tri(tt, T)]<-0
as.data.frame(as.table(tt))
tt使用@Roland的DF对象,您也可以
tt<-with(DF, table(user,product))
tt<-crossprod(tt)
tt[upper.tri(tt, T)]<-0
as.data.frame(as.table(tt))
tt使用@Roland的DF对象,您也可以
tt<-with(DF, table(user,product))
tt<-crossprod(tt)
tt[upper.tri(tt, T)]<-0
as.data.frame(as.table(tt))
tt使用@Roland的DF对象,您也可以
tt<-with(DF, table(user,product))
tt<-crossprod(tt)
tt[upper.tri(tt, T)]<-0
as.data.frame(as.table(tt))
tt在这个循环中,您应该做什么?我通常使用break
或next
来加速循环中的代码。另一个选项是使用避免for循环的函数显示给定示例数据的输出。在这个for
循环中,您应该做什么?我通常使用break
或next
来加速循环中的代码。另一个选项是使用避免for循环的函数显示给定示例数据的输出。在这个for
循环中,您应该做什么?我通常使用break
或next
来加速循环中的代码。另一个选项是使用避免for循环的函数显示给定示例数据的输出。在这个for
循环中,您应该做什么?我通常使用break
或next
来加速循环中的代码。另一种选择是使用避免循环的函数来显示给定示例数据的输出。+1很好地使用了crossprod
,但最有可能的是table
会阻碍这些组合。这一点很好@Arun。我意识到它的计数X,Y与Y,X不同(尽管我将反向计数归零)。我想我是想太花哨了。+1很好地使用了crossprod
,但很可能table
会阻碍这些组合。这一点很好@Arun。我意识到它的计数X,Y与Y,X不同(尽管我将反向计数归零)。我想我是想太花哨了。+1很好地使用了crossprod
,但很可能table
会阻碍这些组合。这一点很好@Arun。我意识到它的计数X,Y与Y,X不同(尽管我将反向计数归零)。我想我是想太花哨了。+1很好地使用了crossprod
,但很可能table
会阻碍这些组合。这一点很好@Arun。我意识到它的计数X,Y与Y,X不同(尽管我将反向计数归零)。我想我是想表现得太花哨了。