我有以下数据集:
Date ID Company
Jan05 1 Coca-Cola
Jan05 2 Coca-Cola
Jan05 3 Coca-Cola
Jan05 4 Apple
Jan05 5 Apple
Jan05 6 Apple
Jan05 7 Microsoft
Feb05 1 McDonald
Feb05 2 McDonald
Feb05 3 McDonald
Feb05 4 McDonald
Feb05 5 McDonald
Feb05 6 Microsoft
.
.
.
Jan06 1 Apple
Jan06 2 Apple
Jan06 3 Apple
Jan06 4 Apple
Jan06 5 Apple
Jan06 6 Apple
Jan06 7 Apple
Feb06 1 McDonald
Feb06 2 McDonald
Feb06 3 McDonald
Feb06 4 McDonald
Feb06 5 McDonald
Feb06 6 Lenova
Feb06 7 Lenova
.
.
Jan07 1 Apple
Jan07 2 Apple
Jan07 3 Apple
Jan07 4 Microsoft
Jan07 5 Lenovo
Jan07 6 Apple
Jan07 7 Apple
Feb07 1 TJmax
Feb07 2 TJMax
Feb07 3 TJMax
Feb07 4 TJMax
Feb07 5 TJMax
Feb07 6 TJMax
Feb07 7 TJMax
.
.
.
.
until July15
我想要做的是以下内容: 1:比较1月05日和1月6日,然后是1月6日,1月7日,2月05日,2月6日,06年2月,07年2月......等等,每个月计算相同公司存在时的ID中位数两个日期。 2:每次计算ID的中位数时,我都不想要新的数据集。我只想确保两家公司在1月05日和1月06日出现,然后计算ID的中位数。
在SAS中最好的方法是什么?
我的最终结果如下:
Date Median_ID
Jan05 2
Jan06 4
Jan06 4
Jan07 3
Feb05 3
Feb06 3
Feb06 0
Feb07 0
从结果中可以看出:在05年1月和06年,唯一匹配的公司是Apple。在06年1月和1月,唯一再次匹配的公司是Apple。 因此,我们在公司匹配时采用ID的中位数。
答案 0 :(得分:0)
目前尚不清楚您是如何计算样本数据的最终结果的 - 如果您将所有中间步骤包括在一个月内,将会更容易理解,例如Jan05
。但是,这似乎可以用一些类似于以下内容的SQL来处理:
data have;
input Date monyy5. ID Company $32.;
format Date monyy5.;
cards;
Jan05 1 Coca-Cola
Jan05 2 Coca-Cola
Jan05 3 Coca-Cola
Jan05 4 Apple
Jan05 5 Apple
Jan05 6 Apple
Jan05 7 Microsoft
Feb05 1 McDonald
Feb05 2 McDonald
Feb05 3 McDonald
Feb05 4 McDonald
Feb05 5 McDonald
Feb05 6 Microsoft
Jan06 1 Apple
Jan06 2 Apple
Jan06 3 Apple
Jan06 4 Apple
Jan06 5 Apple
Jan06 6 Apple
Jan06 7 Apple
Feb06 1 McDonald
Feb06 2 McDonald
Feb06 3 McDonald
Feb06 4 McDonald
Feb06 5 McDonald
Feb06 6 Lenova
Feb06 7 Lenova
Jan07 1 Apple
Jan07 2 Apple
Jan07 3 Apple
Jan07 4 Microsoft
Jan07 5 Lenovo
Jan07 6 Apple
Jan07 7 Apple
Feb07 1 TJmax
Feb07 2 TJMax
Feb07 3 TJMax
Feb07 4 TJMax
Feb07 5 TJMax
Feb07 6 TJMax
Feb07 7 TJMax
;
run;
proc sql;
create table want as
select a.date, median(a.ID) as Median_ID from have a inner join have b
on month(a.date)= month(b.date)
and year(a.date) = year(b.date) - 1
and a.ID = b.ID
and a.company = b.company
group by a.date
;
quit;