SAS Enterprise Guide 计数 IF
SAS Enterprise Guide Count IF
我希望能够在类似于以下的数据集上执行相当于计数的操作。我发现了类似 here 的内容,但我不确定如何将其翻译成企业指南。我想创建几个新列来计算每年每个主键的日期出现次数,例如:
PrimKey Date
1 5/4/2014
2 3/1/2013
1 10/1/2014
3 9/10/2014
变成这样:
PrimKey 2014 2013
1 2 0
2 0 1
3 1 0
我希望在查询生成器中使用计算字段的高级表达式选项,但如果有其他更好的方法,我完全开放。
这是我尝试过的(但失败了):
CASE
WHEN Date(t1.DATE) BETWEEN Date(1/1/2014) and Date(12/31/2014)
THEN (COUNT(t1.DATE))
END
但最终只计算了总日期出现次数,而不考虑我的 between 语句。
假设您使用的是查询生成器,您可以使用如下内容:
我认为您不需要 CASE 语句,而是使用 YEAR() 函数来计算年份并测试它是否等于 2014/2013。相等性测试将 return a 1/0 可以加总到每组的总数。确保在查询生成器的 GROUP BY 部分中包含 PrimKey。
sum(year(t1.date)=2014) as Y2014,
sum(year(t2.date)=2013) as Y2013,
我不喜欢这种类型的解决方案,因为它不是动态的,也就是说,如果您的年龄发生变化,您必须更改您的代码,而且如果发生这种情况,代码中也不会 return 出错。更好的解决方案是通过 Year/PrimKey 执行摘要任务,然后使用转置任务以您想要的结构获取数据。
我希望能够在类似于以下的数据集上执行相当于计数的操作。我发现了类似 here 的内容,但我不确定如何将其翻译成企业指南。我想创建几个新列来计算每年每个主键的日期出现次数,例如:
PrimKey Date
1 5/4/2014
2 3/1/2013
1 10/1/2014
3 9/10/2014
变成这样:
PrimKey 2014 2013
1 2 0
2 0 1
3 1 0
我希望在查询生成器中使用计算字段的高级表达式选项,但如果有其他更好的方法,我完全开放。 这是我尝试过的(但失败了):
CASE
WHEN Date(t1.DATE) BETWEEN Date(1/1/2014) and Date(12/31/2014)
THEN (COUNT(t1.DATE))
END
但最终只计算了总日期出现次数,而不考虑我的 between 语句。
假设您使用的是查询生成器,您可以使用如下内容:
我认为您不需要 CASE 语句,而是使用 YEAR() 函数来计算年份并测试它是否等于 2014/2013。相等性测试将 return a 1/0 可以加总到每组的总数。确保在查询生成器的 GROUP BY 部分中包含 PrimKey。
sum(year(t1.date)=2014) as Y2014,
sum(year(t2.date)=2013) as Y2013,
我不喜欢这种类型的解决方案,因为它不是动态的,也就是说,如果您的年龄发生变化,您必须更改您的代码,而且如果发生这种情况,代码中也不会 return 出错。更好的解决方案是通过 Year/PrimKey 执行摘要任务,然后使用转置任务以您想要的结构获取数据。