Категориальный столбец в фиктивный массив в Excel - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь перевести модель машинного обучения в Excel, чтобы аналитики данных могли играть с ней в интерактивном режиме.

Я хотел бы преобразовать категориальную переменную в фиктивное представление:

* От 1004 *

до

WeekDay
{1,0,0,0,0,0,0}
{0,0,0,1,0,0,0}

Использование массивов excel.

Я пробовал это:

={INT(A1="Monday"),INT(A1="Tuesday"),INT(A1="Wednesday"), ...}

Однако по какой-то причине excel не принимает forumlas в выражениях массивов.

Этот подход работает, но это проблематично c - поскольку он не позволяет объединять несколько массивов в один

=IF(A1="Monday", {1,0,0,0,0,0,0}, IF(A1="Tuesday", {0,1,0,0,0,0,0}, ....))

Кроме того, это очень уродливо

Есть идеи?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Чтобы получить свой массив, вы можете использовать ИНДЕКС следующим образом:

INDEX(IF(TEXT(ROW($2:$8),"dddd")=A1,1,0),0)

Это возвращает вертикальный массив.

для возврата горизонтального массива используйте:

INDEX(IF(TEXT(COLUMN($B:$H),"dddd")=A2,1,0),0)

Я пролил результаты массива на фото ниже:

enter image description here


Если у вас есть Dynami c Array Formula SEQUENCE, ROW и COLUMN можно заменить на:

SEQUENCE(7,,2)

и

SEQUENCE(,7,2)

соответственно

0 голосов
/ 08 мая 2020

Я не уверен, какова конечная цель, но я бы предложил вместо массива (опять же, предполагая, что вы не используете VBA, и даже если да, это очень возможно с функциями Case):

Используйте формулу = День недели (Ячейка, другой тип возвращаемого значения, для которого день должен быть = 1)

Если вы должны использовать фактическую дату (например, 5/1/2020), отобразите ее с помощью настраиваемого форматирования только с день недели (обычно в анализе данных уже есть полная дата),

Значение ячейки A20 = «5/1/2020», формат отображения длинной даты - «Пятница, 1 мая 2020 г.»

ссылка на ячейку с помощью формулы '= WEEKDAY (A20,1)' = 6

ссылка на ячейку с помощью формулы '= WEEKDAY (A20,2)' = 5 (похоже ли это на {0,0, 0,0,1,0,0} достаточно для использования?)

при использовании VBA вы можете определить диапазон с помощью logi c, чтобы превратить его в {0,0,0,0, 1,0,0}

Надеюсь, это поможет.

...