【问题标题】:Fill in missing values with mode in SASSAS中用mode填充缺失值
【发布时间】:2014-11-14 04:13:40
【问题描述】:

我认为替换缺失的逻辑很清楚,但是当我将其转储到 SAS 时,我发现它太复杂了,无法开始。

【问题讨论】:

  • 两个建议。首先,查看 PROC EXPAND 和 PROC STDIZE,如果您有这些许可。他们都有与您正在做的事情相关的选项。第二,试一试。您想用模式替换,嗯,第一步是计算这些模式。这样做,看看如何整合它们对您来说是否变得显而易见 - 如果没有,请在此处发布您拥有的内容,您可以获得更有意义的帮助。发布足够的数据以明确您的问题,并发布代码以至少计算模式并解决一些更简单的情况。
  • 还在为此苦苦挣扎?

标签: sas mode missing-data


【解决方案1】:

鉴于未提供任何代码,我将为您提供一些粗略的指导以帮助您入门,但请自行确定具体细节。

首先,让我们为数据创建一个月份列,然后计算每个月每个键的模式。此外,让我们将这些新数据放入自己的数据集中。

data temp;
   set original_data;
   month = month(date);
run;

proc univariate data=temp modes;
   var values;
   id key month;
   out=mode_data;
run;

但是,此过程会以您可能不想要的非常具体的方式计算模式(在平局的情况下默认为最低,并且如果至少两次没有发生任何事情,则不会产生任何模式)文档:http://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_univariate_sect027.htm

如果这对您不起作用,我建议使用 proc sql 来获取每个键、月份、值组合的计数,并从那里计算您自己的模式。

proc sql;
   create table mode_data as select distinct
   key, month, value, count(*) as distinct_count
   from temp
   group by key, month, value;
quit;

您可能希望从那里创建一个包含数据中所有月份的表。

proc sql;
   create table all_months as select distinct month
   from temp;
quit;

不要忘记将任何缺失的月份从模式数据合并回来,并使用lagretain 函数来搜索前几个月的“旧模式”。

然后简单地将您完全填充的模式数据合并回我们在上面创建的临时数据集,并在缺少值时将缺失值归入模式(即 value = .)

希望能帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多