【发布时间】:2020-10-31 10:51:12
【问题描述】:
我是 SAS 新手,想就以下问题获得帮助:
1:示例表如下所示
Time Color Food label
2020 red Apple A
2019 red Orange A,B
2018 blue Apple A,B
2017 blue Orange B
-
返回标签的逻辑是:
when color = 'red' then 'A' when color = 'blue' then 'B' when food = 'orange' then 'B' when food = 'apple' then 'A',
因为对于第 2 行,我们有红色和橙色,所以我们的标签应该同时包含 'A,B',与第 3 行相同。
要求是打印出每个组合的标签。我知道我们可以使用 CASE WHEN 语句来定义我们的标签应该如何基于颜色和食物。这里我们只有 2 种颜色和 2 种不同的食物,但是如果我们喜欢 7 种不同的颜色和 10 种不同的食物,那么我们会有 7*10 种不同的组合。我不想通过使用 case when 语句来列出所有这些组合。
有什么方便的方法可以退回标签吗?感谢您的任何想法!(更喜欢在 PROC SQL 中实现它,但也欢迎使用 SAS)
【问题讨论】:
-
您只有两个类别还是需要将其扩展到更多类别和组?即只有食物/颜色?
-
我建议创建格式,然后使用这些格式创建所需的变量。红色和苹果的标签是 A、A 还是 A?
-
为什么你用一个字母标记一些记录,而用两个字母标记一些记录?为什么不总是一个字母代表食物类型,另一个字母代表颜色类型?
-
您介意多解释一下如何创建格式吗?我认为红色和苹果的标签应该是 A,因为两列都符合 A 的标准(或者你认为 A,A)会更容易实现吗?