在Excel中为虚拟数组的分类列

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

我正在尝试将机器学习模型转换为excel,以便数据分析人员可以交互地使用它。

我想将分类变量转换为虚拟表示形式:

WeekDay
Monday
Thursday

to

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。

此方法确实有效,但存在问题-因为它不允许将多个数组组合成一个数组

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

也很丑

任何想法?

excel categorical-data dummy-variable
2个回答
1
投票

要获取数组,您可以像这样使用INDEX:

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


如果具有动态数组公式序列,则行和列可以替换为:

SEQUENCE(7,,2)

SEQUENCE(,7,2)

分别


0
投票

我不确定最终目标是什么,但是我建议不要使用数组(同样,假设您没有使用VBA,即使您使用的是,使用Case函数也很有可能):

使用公式= Weekday(Cell,当天应为1的不同返回类型)

如果要使用实际日期(例如,2020年5月1日,请通过自定义格式将其显示为仅显示星期几(通常数据分析已经具有完整日期),

单元格值A20 =“ 5/1/2020”,格式显示长日期-“ 2020年5月1日,星期五”]

使用公式'= WEEKDAY(A20,1)'= 6的单元格引用

使用公式'= WEEKDAY(A20,2)'= 5的单元格引用(这类似于{0,0,0,0,1,0,0}足以供您使用吗?]

如果使用VBA,则可以使用逻辑定义范围以将其变为{0,0,0,0,1,0,0}

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.