在sas中查找新用户与重复用户
在给定的数据集下面,我试图找到新用户和重复用户在sas中查找新用户与重复用户,sas,proc-sql,Sas,Proc Sql,在给定的数据集下面,我试图找到新用户和重复用户 DATE ID Unique_Event 20200901 a12345 1 20200902 a12345 1 20200903 b12345 1 20200903 a12345 1 20200904 c12345 1 在上面的数据集中,由于a12345出现在多个日期,应被视为“重复”用户,而b12345只出现一次,因此他是“新”用户。请注意,这只是样本数据,因为实际数
DATE ID Unique_Event
20200901 a12345 1
20200902 a12345 1
20200903 b12345 1
20200903 a12345 1
20200904 c12345 1
在上面的数据集中,由于a12345出现在多个日期,应被视为“重复”用户,而b12345只出现一次,因此他是“新”用户。请注意,这只是样本数据,因为实际数据相当大。我尝试了下面的代码,但没有得到正确的计数。理想情况下,tot_num_users-num_new_users应该是重复用户,但我得到的计数不正确。我错过什么了吗
Expected Output:
Month new_users repeated_users
9 2 1
代码:
在子选择中,对于每个
ID
,您可以计算不同的日期
的数量,以确定新的
/重复的
状态。所有ids聚合计算都是通过子选择进行的
proc sql;
create table freq as
select
count(*) as id_count
, sum (status='repeated') as id_repeated_count /* sum counts a logic eval state */
, sum (status='new') as id_new_count
from
( select
id
, case
when count(distinct date) > 1 then 'repeated'
else 'new'
end as status
from
user_events
group by
id
) as statuses
;
在子选择中,对于每个
ID
,您可以计算不同的日期
的数量,以确定新的
/重复的
状态。所有ids聚合计算都是通过子选择进行的
proc sql;
create table freq as
select
count(*) as id_count
, sum (status='repeated') as id_repeated_count /* sum counts a logic eval state */
, sum (status='new') as id_new_count
from
( select
id
, case
when count(distinct date) > 1 then 'repeated'
else 'new'
end as status
from
user_events
group by
id
) as statuses
;
一个不使用procsql的替代解决方案(尽管我知道您将其标记为“procsql”)
一个不使用procsql的替代解决方案(尽管我知道您将其标记为“procsql”)
因为您使用的是proc sql,所以这是一个sql问题,而不是SAS问题。 尝试以下方法:
proc sql;
select ID,count(Unique_Event)
from <that table>
group by ID
order by ID
run;
proc-sql;
选择ID、计数(唯一事件)
从…起
按ID分组
按ID订购
跑
因为您使用的是proc sql,所以这是一个sql问题,而不是SAS问题。
尝试以下方法:
proc sql;
select ID,count(Unique_Event)
from <that table>
group by ID
order by ID
run;
proc-sql;
选择ID、计数(唯一事件)
从…起
按ID分组
按ID订购
跑
请发布预期结果数据集的样本好吗?@LuizZ添加了预期结果数据集的样本好吗?请发布预期结果数据集的样本好吗?@LuizZ添加了预期结果数据集的样本你太棒了你太棒了