Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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 - Fatal编程技术网

Sas 所有行的最小值

Sas 所有行的最小值,sas,Sas,我有一个包含25行的文件,如: Model Cena (zl) Nagrywanie fimow HD Optyka - krotnosc zoomu swiatlo obiektywu przy najkrotszej ogniskowej Wielkosc LCD (cale) Lumix DMC-LX3 1699 tak 2.5 2 3 Lumix DMC-GH1 + LUMIX G VARIO HD 14-140mm/F4.0-5.8 ASPH./MEGA O.

我有一个包含25行的文件,如:

Model   Cena (zl)   Nagrywanie fimow HD Optyka - krotnosc zoomu swiatlo obiektywu przy najkrotszej ogniskowej   Wielkosc LCD (cale)
Lumix DMC-LX3   1699    tak 2.5 2   3
Lumix DMC-GH1 + LUMIX G VARIO HD 14-140mm/F4.0-5.8 ASPH./MEGA O.I.S 5199    tak 10  4   3
我写道:

DATA lab_1;

INFILE 'X:\aparaty.txt' delimiter='09'X;

INPUT Model $ Cena Nagrywanie $ Optyka Wielkosc_LCD Nagr_film;

f_skal = MAX(Cena - 1500, Optyka - 10, Wielkosc_LCD - 1, Nagr_film - 1) + 1/1000*(Cena - 1500 + Optyka - 10 + Wielkosc_LCD - 1 + Nagr_film - 1);

*rozw = MIN(f_skal);
*rozw = f_skal[,<:>];

PROC SORT;
BY DESCENDING f_skal;

PROC PRINT DATA = lab_1;

data _null_;
set lab_1;
FILE 'X:\aparatyNOWE.txt'; DLM='09'x;
PUT Model= $ Cena Nagrywanie $ Optyka Wielkosc_LCD Nagr_film f_skal;
RUN;
数据实验室1;
填充'X:\aparaty.txt'分隔符='09'X;
输入型号$Cena Nagrywanie$Optyka Wielkosc_液晶Nagr_胶片;
f_skal=最大值(Cena-1500、Optyka-10、Wielkosc_LCD-1、Nagr_胶片-1)+1/1000*(Cena-1500+Optyka-10+Wielkosc_LCD-1+Nagr_胶片-1);
*rozw=最小值(f_skal);
*rozw=f_skal[,];
进程排序;
通过下降f_skal;
过程打印数据=实验室1;
数据为空;
设实验室1;
文件“X:\aparatyNOWE.txt”;DLM='09'x;
PUT型号=$Cena Nagrywanie$Optyka Wielkosc\U LCD Nagr\U胶片f\U skal;
跑

我需要找到f_skal的最小值,我不知道怎么做,因为min(f_skal)不起作用。

在一个数据步骤中,min函数一次只查看一行-如果您向它提供多个变量,它将为该行提供所有这些变量中的最小值,但您不能使用它查看多行中的值(除非先将多行数据放入一行,例如通过使用retain/lag)

在SAS中跨整个数据集计算统计数据的一种方法是使用proc means/proc summary,例如:

proc summary data = lab1;
  var f_skal;
  output out = min_val min=;
run;
这将在工作库中创建一个名为min_val的数据集,该数据集中的f_skal值将是数据集lab1中任何位置的最小值

如果您希望创建包含最小值的宏变量,以便在后续代码中使用它,一种方法是使用proc sql:

proc sql noprint;
    select min(f_skal) into :min_value from lab1;
    quit;
run;

%put Minimum value = &min_value;
在proc sql中,min的行为是不同的——在这里,它比较了行之间的值,这是您尝试使用它的方式