【发布时间】:2019-01-29 15:43:26
【问题描述】:
我有一个 2017 年至 2018 年每周收入百分比的数据集。有些人在 2017 年初没有数据,因为他们直到后来才开始赚钱。周数分别为 201701、201702 - 201752 和 201801 - 201852。
我想要做的是有 104 个新变量,称为 WEEK0 - WEEK103,其中 WEEK0 将具有挣钱列的第一个非空列值。以下是数据示例:
MON_EARN_201701 MON_EARN_201702 MON_EARN_201703 MON_EARN_201704
30 21 50 65
. . 30 100
. 102 95 85
然后我希望我的数据具有以下列(示例)
WEEK0 WEEK1 WEEK2 WEEK3
30 21 50 65
30 100 . .
102 95 85 .
这些只是一个非常大的数据集的小例子。
我在想我需要尝试做一些 do 循环,所以到目前为止我尝试过的是:
DATA want;
SET have;
ARRAY mon_earn{104} mon_earn_201701 - mon_earn_201752 mon_earn_201801 -mon_earn_201852;
ARRAY WEEK {104} WEEK0 - WEEK103;
DO i = 1 to 104;
IF mon_earn{i} NE . THEN;
WEEK{i} = mon_earn{i};
END;
END;
RUN;
这不起作用,因为当第一个值为空时它不会填充 WEEK0。
如果需要更多信息,请评论,我会添加它。
【问题讨论】:
-
将您的数据转换为长格式,这将变得非常容易。
-
如果是长格式怎么办?
-
你会排序,你可以从第一个不缺失的值开始重新编号。
-
你能通过回答问题告诉我吗?我不明白如何重新编号整个数据集,因为每一行的第一个非缺失值在不同的一周,我有 100,000 + 行。