如何使用 dcast 函数转换我的数据集

How to use dcast function to transform my dataset

我有一个非常大的数据集。它包含超过 1000 万条记录。使用这么多数据集来应用任何算法都非常困难。所以,我试图重组这个数据集。在我的数据集中,每个客户都有这么多记录。现在我正在尝试为每位客户转换一条记录。

这里我代表我的样本模型数据。

d1<-structure(
        list(userid  = c(64455670203, 64455670203, 64455670203, 64455670203, 64455670203, 64455670204, 64455670204, 64455670204, 64455670204, 64455670204),
             day     = c(1L, 1L, 2L, 3L, 3L, 2L, 2L, 3L, 4L, 4L),
             channel = structure(
                          c(1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L),
                          .Label = c("dsp", "osr"),
                          class = "factor"
                       )
        ),
        .Names    =  c("userid", "day", "channel"),
        class     = "data.frame",
        row.names = c(NA, -10L)
)

现在我打算将上面表示的数据转换如下..

d2<-structure(
    list(csm_id = c(64455670203, 64455670204),
         dsp1   = c(2L, 0L),
         dsp2   = c(1L, 1L),
         dsp3   = c(1L, 0L),
         dsp4   = 0:1,
         ors1   = c(0L, 0L),
         ors2   = 0:1,
         ors3   = c(1L, 1L),
         ors4   = 0:1
    ),
    .Names    = c("csm_id", "dsp1", "dsp2", "dsp3", "dsp4", "ors1", "ors2", "ors3", "ors4"),
    class     = "data.frame",
    row.names = c(NA, -2L)
)

这里我要做的是,首先我在我的数据集中找到不同的频道和不同的日子。现在我连接这两个对象(不同的频道和天数),然后将它们用作我的新数据集的列名。

我用R写了一段简单的代码,但是真的很费时间。谁能帮我完成这个任务。

如何在 python 中进行同样的操作?

提前致谢。

尝试

 dcast(d1, userid~channel+day, value.var='day', drop=FALSE)
 #        userid dsp_1 dsp_2 dsp_3 dsp_4 osr_1 osr_2 osr_3 osr_4
 #1 64455670203     2     1     1     0     0     0     1     0
 #2 64455670204     0     1     0     1     0     1     1     1