【发布时间】:2017-08-10 18:43:30
【问题描述】:
我有一个包含两列的表格:
+---------+--------+
| keyword | color |
+---------+--------+
| foo | red |
| bar | yellow |
| fobar | red |
| baz | blue |
| bazbaz | green |
+---------+--------+
我需要在 PostgreSQL 中进行某种单热编码和转换表:
+---------+-----+--------+-------+------+
| keyword | red | yellow | green | blue |
+---------+-----+--------+-------+------+
| foo | 1 | 0 | 0 | 0 |
| bar | 0 | 1 | 0 | 0 |
| fobar | 1 | 0 | 0 | 0 |
| baz | 0 | 0 | 0 | 1 |
| bazbaz | 0 | 0 | 1 | 0 |
+---------+-----+--------+-------+------+
是否可以只使用 SQL?关于如何开始的任何提示?
【问题讨论】:
-
one-hot encoding是什么意思? -
您的“颜色”列表是否预先知道?
-
@PM77-1 是的,只有这四个。
-
@Siyual 是转换的名称,即将分类数据转换为数字,其中每个类别位于单独的列中。 quora.com/…
-
然后对每个“颜色”使用
CASE WHEN。如果keyword&color对不是唯一的,则需要添加聚合。
标签: sql postgresql crosstab