列/变量的虚拟化

Inf*_*ngi 2 r time-series data.table dummy-variable

我在R中设计一个神经网络.为此,我必须准备我的数据并导入一个表.

例如:

      time    hour Money day
1:  20000616    1  9.35   5
2:  20000616    2  6.22   5 
3:  20000616    3  10.65  5
4:  20000616    4  11.42  5
5:  20000616    5  10.12  5
6:  20000616    6  7.32   5
Run Code Online (Sandbox Code Playgroud)

现在我需要一个虚拟化.我的决赛桌应该是这样的:

      time    Money day  1   2   3   4   5   6   
1:  20000616  9.35   5   1   0   0   0   0   0
2:  20000616  6.22   5   0   1   0   0   0   0
3:  20000616  10.65  5   0   0   1   0   0   0
4:  20000616  11.42  5   0   0   0   1   0   0
5:  20000616  10.12  5   0   0   0   0   1   0
6:  20000616  7.32   5   0   0   0   0   0   1
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法/智能方法将我的表格转换为新的布局?或者以编程方式在R?我需要在R中执行此操作,而不是在导入之前.

提前致谢

Jaa*_*aap 5

一个可能的解决方案data.table(你正在使用):

dt[dcast(dt, hour ~ hour, value.var = 'hour', fun = length), on = .(hour)]
Run Code Online (Sandbox Code Playgroud)

这使:

       time hour Money day 1 2 3 4 5 6
1: 20000616    1  9.35   5 1 0 0 0 0 0
2: 20000616    2  6.22   5 0 1 0 0 0 0
3: 20000616    3 10.65   5 0 0 1 0 0 0
4: 20000616    4 11.42   5 0 0 0 1 0 0
5: 20000616    5 10.12   5 0 0 0 0 1 0
6: 20000616    6  7.32   5 0 0 0 0 0 1
Run Code Online (Sandbox Code Playgroud)

我想,你的真实数据集,你将有更多变化time的和day的,你也可以适应的代码:

dt[dcast(dt, time + day + hour ~ hour, value.var = 'hour', fun = length)
   , on = .(time, day, hour)]
Run Code Online (Sandbox Code Playgroud)

使用数据:

dt <- fread(' time    hour Money day
20000616    1  9.35   5
20000616    2  6.22   5 
20000616    3  10.65  5
20000616    4  11.42  5
20000616    5  10.12  5
20000616    6  7.32   5')
Run Code Online (Sandbox Code Playgroud)