如何使用 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
我有一个非常大的数据集。它包含超过 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