如何将数据转换成合适的表来计算R中的单链接聚类

如何将数据转换成合适的表来计算R中的单链接聚类,r,binary,transform,R,Binary,Transform,我试图用二进制代码将一些数据转换成数据表(稍后用于集群)。我得到的数据如下所示: order_number product_id 34 37552 5 24852 10 24852 15 33290 7 23586 35 22395

我试图用二进制代码将一些数据转换成数据表(稍后用于集群)。我得到的数据如下所示:

  order_number  product_id 
            34       37552 
             5       24852 
            10       24852 
            15       33290 
             7       23586 
            35       22395 
             4       16766 
            33       46393 
             9       12916 
            61       12341 
我想要得到的是列order\u number,它看起来像一个行标题,然后根据product\u id中的某个产品是否在order\u number单元格中粘贴0或1。所以订单号应该像一个篮子。我希望它看起来像这样:

                  order_number 
 product_id    34              5     
 37552          1              0     
 24852          0              1      
 24852          0              1    

有人知道怎么做吗?任何帮助都将不胜感激,我被卡住了

一张简单的
表格如何

> table(df$product_id, df$order_number, dnn=c("Product ID","Order Number"))

##           Order Number
## Product ID 4 5 7 9 10 15 33 34 35 61
##      12341 0 0 0 0  0  0  0  0  0  1
##      12916 0 0 0 1  0  0  0  0  0  0
##      16766 1 0 0 0  0  0  0  0  0  0
##      22395 0 0 0 0  0  0  0  0  1  0
##      23586 0 0 1 0  0  0  0  0  0  0
##      24852 0 1 0 0  1  0  0  0  0  0
##      33290 0 0 0 0  0  1  0  0  0  0
##      37552 0 0 0 0  0  0  0  1  0  0
##      46393 0 0 0 0  0  0  1  0  0  0

我不确定您为什么需要产品id的副本,但这将为您提供您在问题中提出的确切的所需输出;然而,它不是干净的,因为期望的输出有点奇怪

 df.out <- df.org


 df.out[as.character(df.out$order_number)] <- 0
 df.out <- rbind(df.out ,c("NA", "NA",df.out$product_id))

 for (i in 1:(nrow(df.out)-1)){
   for(j in 3:ncol(df.out)){
     df.out[i,j] <- ifelse(df.out[11,j]==df.out[i,2],1,df.out[i,j])
   }
 }


 df.out <- df.out[-11,-1]

 df.out

#    product_id 34 5 10 15 7 35 4 33 9 61 
# 1       37552  1 0  0  0 0  0 0  0 0  0 
# 2       24852  0 1  1  0 0  0 0  0 0  0 
# 3       24852  0 1  1  0 0  0 0  0 0  0 
# 4       33290  0 0  0  1 0  0 0  0 0  0 
# 5       23586  0 0  0  0 1  0 0  0 0  0 
# 6       22395  0 0  0  0 0  1 0  0 0  0 
# 7       16766  0 0  0  0 0  0 1  0 0  0 
# 8       46393  0 0  0  0 0  0 0  1 0  0 
# 9       12916  0 0  0  0 0  0 0  0 1  0 
# 10      12341  0 0  0  0 0  0 0  0 0  1

df.out我喜欢这个解决方案,但OP(出于某种原因!)希望在
产品ID
列中有重复项。你说得对!是的,我也看不出原因,但你的回答符合OP的要求。不管怎样,没关系。这是一个很好的解决方案,希望能帮助其他人,如果不是OP,他/她自己+1我认为这是必要的想法是错误的,但我找到了更合适的方法来对数据进行聚类。无论如何,非常感谢!
df.org <- structure(list(order_number = c(34L, 5L, 10L, 15L, 7L, 35L, 4L, 
33L, 9L, 61L), product_id = c(37552L, 24852L, 24852L, 33290L, 
23586L, 22395L, 16766L, 46393L, 12916L, 12341L)), .Names = c("order_number",
"product_id"), class = "data.frame", row.names = c(NA, -10L))