Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用SAS中的模式填充缺少的值_Sas_Mode_Missing Data - Fatal编程技术网

用SAS中的模式填充缺少的值

用SAS中的模式填充缺少的值,sas,mode,missing-data,Sas,Mode,Missing Data,我认为替换missingness的逻辑非常清楚,但当我将其转储到SAS时,我发现它太复杂,无法开始使用。如果没有提供任何代码,我将为您提供一些粗略的指导,让您开始使用,但请您确定任何细节 首先,让我们为数据创建一个月列,然后计算每个月每个键的模式。另外,让我们把这个新数据放在它自己的数据集中 data temp; set original_data; month = month(date); run; proc univariate data=temp modes; var

我认为替换missingness的逻辑非常清楚,但当我将其转储到SAS时,我发现它太复杂,无法开始使用。

如果没有提供任何代码,我将为您提供一些粗略的指导,让您开始使用,但请您确定任何细节

首先,让我们为数据创建一个月列,然后计算每个月每个键的模式。另外,让我们把这个新数据放在它自己的数据集中

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

proc univariate data=temp modes;
   var values;
   id key month;
   out=mode_data;
run;
但是,此过程以您可能不希望的非常具体的方式计算模式(在平局的情况下默认为最低值,如果至少两次不发生任何情况,则不生成模式)文档:

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

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;
不要忘记将从到的任何缺失月份合并回模式数据,并使用
lag
retain
功能搜索前几个月的“旧模式”

然后,只需将完全填充的模式数据合并回我们在上面创建的临时数据集,并在缺少值(即值=)时将缺少的值填充到模式中


希望这能帮助您开始。

两条建议。首先,查看PROC EXPAND和PROC STDIZE,如果您有这些许可证的话。他们都有与你正在做的事情相关的选择。第二,尝试一下。你们想替换为模式,第一步是计算这些模式。这样做,看看你是否能清楚地知道如何将它们结合起来——如果没有,把你的东西贴在这里,你就能得到更有意义的帮助。发布足够的数据,使您的问题变得清晰,并提供代码,以至少计算模式并解决一些较简单的情况。仍在为此挣扎吗?