如何将数据帧转换为一个热编码

问题描述 投票:2回答:1

我有一个数据框,其中id可以有多种事件类型

> head(eventtype, 10)
      id    event_type
1   6597 event_type 11
2   8011 event_type 15
3   2597 event_type 15
4   5022 event_type 15
5   5022 event_type 11
6   6852 event_type 11
7   6852 event_type 15
8   5611 event_type 15
9  14838 event_type 15
10 14838 event_type 11

我想将其转换为格式

   id event_type 1 event_type 2 event_type 3 ... event_type 50 
14838            0            0            0 ...             0 

在R中实现这一目标的最佳方法是什么?有没有包裹?我尝试过使用假人:

new_my_data < - dummy.data.frame(eventtype,names = c(“event_type1”,“event_type2”,“event_type3”,“event_type4”,“event_type5”)

但它不起作用。我试图搜索,但可以看到这个特定问题的解决方案。几乎所有帖子都假设所有人都知道一个热编码。

请帮忙。

r dataframe one-hot-encoding
1个回答
0
投票

很容易与mltoolsdata.table

> result
       id event_type_event_type 10 event_type_event_type 11 event_type_event_type 12 event_type_event_type 13 event_type_event_type 14
  1: 1274                        0                        0                        0                        0                        0
  2: 7668                        0                        0                        0                        0                        1
  3:  545                        1                        0                        0                        0                        0
  4: 5614                        0                        0                        0                        0                        0
  5: 9376                        0                        0                        0                        0                        0

Code

set.seed(1701)
df <- data.frame(id = sample(1:10000, 500, replace = TRUE),
                 event_type = paste("event_type", sample(10:20, 500, replace = TRUE)))
dt <- as.data.table(df)
result <- one_hot(dt)
© www.soinside.com 2019 - 2024. All rights reserved.