我在SAS提供的逻辑回归建模课程中遇到了以下代码:
data dataset(drop=i);
set data;
array mi{*} mi_Ag mi_Inc
mi_WR;
array x{*} Ag Inc WR;
do i=1 to dim(mi);
mi{i}=(x{i}=.);
end;
run;
我需要了解两件事:
1。)运行此数据步骤后,会创建一个标题为“i”的列。这意味着什么,为什么会这样。丢弃“i”基本上会丢弃它,但如果我不使用drop选项,则列保留在数据集中
2。)这个步骤是用1代替所有缺失的值,用0代替。如果在do步骤中没有明确指出需要做什么,那么会发生什么。在我眼里,“我i = 1到昏暗(mi); mi {i} =(x {i} =。);”应该简单地在mi(i)中将点放在x(i)中找到点的任何地方。
第2部分:
折叠分类变量时,使用了以下代码:
proc freq data=example1 noprint;
tables CLUSTER_CODE*TARGET_B / chisq;
output out=out_chi(keep=_pchi_) chisq;
run;
data ex_cutoff;
if _n_=1 then set out_chi;
set ex_cluster;
chisquare=_pchi_*rsquared;
degfree=numberofclusters-1;
logpvalue=logsdf('CHISQ',chisquare,degfree);
run;
n = 1在做什么?而且,为什么我们要创建chisquare = _pchi * rsquared。 pchi 已经是chisquare了,那么将它与R square相乘是什么意思?
由于
P.S。代码来自SAS学习课程之一。希望我可以在这里分享它用于讨论/学习目的。
答案 0 :(得分:0)
我是数组迭代器(在do
循环中创建)。它已被删除,因为它并不是真的要保留在数据集上,它只是一个迭代器(让你一次通过数组一个元素,在那个迭代过程中让你引用一个元素)单个元素)。
mi{i}=(x{i}=.);
正在分配1/0,如下所示:
x(i)=.
是真还是假。如果是true
,则评估为1
。如果是false
,则评估为0
。因此,当x(i)=时,它是真的。那么m(i)被赋予1;否则它被指定为0.这就是SAS如何使用布尔值(True / False);许多其他语言也是如此(真是非零,假是零);并且当转换为数字时,True将转换为1(但任何非零非缺失值为' True'当以相反方式转换时)。