Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 两个参数的所有组合的频率_R - Fatal编程技术网

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的用户数量(即使他们也拥有其他产品)。

DF
DF
DF
DF
DF使用@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不同(尽管我将反向计数归零)。我想我是想表现得太花哨了。