用SAS中的模式填充缺少的值
我认为替换missingness的逻辑非常清楚,但当我将其转储到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
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,如果您有这些许可证的话。他们都有与你正在做的事情相关的选择。第二,尝试一下。你们想替换为模式,第一步是计算这些模式。这样做,看看你是否能清楚地知道如何将它们结合起来——如果没有,把你的东西贴在这里,你就能得到更有意义的帮助。发布足够的数据,使您的问题变得清晰,并提供代码,以至少计算模式并解决一些较简单的情况。仍在为此挣扎吗?