你好,
我认为这是一个相当简单的公式,但发现自己收到格式错误。
我有一个包含月份(10 月、11 月、12 月等...)的字符类型列。我创建了一个名为“season”的新列并编写了一个 IF(Contains(...formula to claasifiy if the month is October Then = fall, 依此类推,通过创建 4 个类别(夏季、冬季、春季、秋季)的列表.但是,CONTAINS 不会采用 OR。
IE
If(Contains(:month, "October" | "November"), "fall", Empty())
我错过了什么?任何援助将不胜感激。
正如 Jim 所指出的,语法要求 OR 语句在语句中重复列 =。Match 确实工作得更好,但为什么不直接使用列 Recode 实用程序(它将生成匹配公式)?
您可以在列中搜索值列表。这是使用该方法的公式。
dt = New Table( "test", Add Rows( 12 ),
New Column( "Month", Character, "Nominal",
Set Values(
{"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"}
)
),
New Column( "Season",
Character,
"Nominal",
Formula(
spring_list = {"March", "April", "May"};
summer_list = {"June", "July", "August"};
fall_list = {"September", "October", "November"};
winter_list = {"December", "January", "February"};
If( Contains( spring_list, :Month ), "Spring",
Contains( summer_list, :Month ), "Summer",
Contains( fall_list, :Month ), "Fall",
Contains( winter_list, :Month ), "Winter",
);
)
)
);If(Contains(:month, "October") | Contains(:month, "November"), "fall", "")
以上是您采用的方法的正确语法。但是,Ian 的方法更具可读性,因此更合适
查看“Help > Scripting Index”中的“Match()”函数。