Как отформатировать proc tabulate для получения десятичных миллионов?
Мои данные представлены в формате миллионов, и мне нужно представить данные в виде десятичных миллионов в SAS.
У меня есть данные, содержащие арендную плату в миллионах долларов, т.е. 1 260 678,21, которые я надеюсь представить в виде десятичных миллионов, то есть "1,3".
Я попытался создать свою собственную функцию для деления следующим образом:
/***/
* create a function to round
*;
proc fcmp outlib=work.function.sample;
function round1000x(value);
return(round(value/1000000,1));
endsub;
run;
*
* make function available
*;
options cmplib=work.func;
*
* create a format that uses the function
*;
proc format;
value round1000x.;
run;
/*use this format in a proc tabulate statement*/
proc tabulate data=my_data format=round1000x.;
var rent_cost;
table rent_cost;
run;
Однако я получаю ошибку:
ERROR: The format ROUND1000X has a label that defines another format to be
loaded (named ROUND1000X), but this format could not be
successfully loaded (possibly for the same reason).
Кто-нибудь был бы знаком с этой проблемой?
1 ответ
Вы можете создать представление, которое масштабирует значение до желаемой величины и табулирует это.
Пример:
data have;
do street = 1 to 50;
rent = 7e5 + street * 1e5;
output;
end;
run;
data forTabulate / view=forTabulate;
set have;
rentM = round (rent / 1e6, 0.01);
run;
proc tabulate data=forTabulate;
class street;
var rentM;
table street, rentM*sum='($M)'*f=5.2;
run;