data study;
input Subj : $3.
Group : $1.
Dose : $4.
Weight : $8.
Subgroup;
x= input(Weight,5.1);
datalines;
001 A Low 220 2
002 A High 90 1
003 B Low 193.6 1
004 B High 165 2
005 A Low 123.4 1
;
Why does X get truncated? X shows up as 22 instead of 220,9
instead of 90 and 19.8 instead of 198? This problem doesnt
happen with the values 193.6 and 123.4.
This does not happen if x is read on the 5. informat instead
of the 5.1 informat
In this question, I rename the numeric variable phone to
numphone and then try use phone=put(numphone,comma16.) to
store the numeric value numphone as a string value in phone.
But I get a warning tha numphone already exists and in the
data sat phone doesnt exist and numphone is set to missing. Why?
data names_and_more;
input Name $20.
Phone : comma16.
Height & $10.
Mixed & $8.;
Name = tranwrd(Name,' ',' ');
rename phone = numphone;
phone = put(numphone,comma16.);
datalines;
Roger Cody 9,087,821,234 5ft. 10in. 50 1/8
Thomas Jefferson 3,158,488,484 6ft. 1in. 23 1/2
Marco Polo 8,001,234,567 5Ft. 6in. 40
Brian Watson 5,183,551,766 5ft. 10in 89 3/4
Michael DeMarco 4,452,322,233 6ft. 76 1/3
;
I use NOCUM/NOPERCENT option in the tables statement like this
Proc freq data = deepak;
tables x y /nocum nopercent;
run;
Here I get nopercent and nocum in the output only for
variables x and y. How do i do it for all variables?
Deepak
I have 2 data sets A & B. Both have a variable called Age in
them, each of them specifying a different functionality.
In my program I use bot these data sets. How do I specify
which Age variable I want to use?
data voter;
input Age Party : $1. (Ques1-Ques4)($1. + 1);
datalines;
23 D 1 1 2 2
45 R 5 5 4 1
67 D 2 4 3 3
39 R 4 4 4 4
19 D 2 1 2 1
75 D 3 3 2 3
57 R 4 3 4 4
;
Idont understand what the (Ques1-Ques4)($1. + 1) means.
I have seen (Ques1-Ques4)(4*$1.), but what is
(Ques1-Ques4)($1. + 1)?
Appreciate all help
Thanks
libname deepak 'C:\SAS Files';
proc format;
invalue convert 'A+' = 100
'A' = 96
'A-' = 92
'B+' = 88
'B' = 84
'B-' = 80
'C+' = 76
'C' = 72
'F' = 65;
data deepak.grades;
input ID $3. Grade convert.;
*format Grade convert. ;
datalines;
001 A-
002 B+
003 F
004 C+
005 A
;
proc print data = deepak.grades;
run;
I get the following output
Obs ID Grade
1 001 .
2 002 .
3 003 .
4 004 .
5 005 .
I don’t understand why Grade shows up as a missing value.
Everything seems fine, including ID $3.
Now, in case I use ID : $3. Or use column input, I get the
desired output.
Kindly help
Deepak
What would the following datastep do?
Data _null_;
Set Dist end=eof;
Call Symput("xx"!!left(put(_n_,2.)),&dimension);
If EOF then
Call Symput('numrows',left(put(_n_,2.)));
Run;
dimension is a macro variable that is being passed here
hi i am nipun
can anybody tell me that
if a clinical sas programmer write the code and after
successfull execution
where do they store it.
how they submit tables to TL
how work is assigned to programmers
either both code, log, output to be submitted.
can any one tell me the process
data data1;
input dt account;
format dt date9.;
cards;
1745 1230
1756 1120
1788 1130
1767 1240
;
data data2;
input startdt enddt total;
format startdt date9. enddt date9.;
cards;
1657 1834 12300
1557 1758 16800
1789 1789 12300
1788 1345 12383
1899 1899 13250
;
proc sql;
create table data3 as
select * from data1 as x left join data2 as y
on x.dt>=y.startdt and x.dt<=y.enddt;
quit;
Here, we are getting cartision product. But,I want left
join report consisting of this program. It should not get
duplicate values. you can modify the program also.
data data1;
input dt account;
format dt date9.;
cards;
1745 1230
1756 1120
1788 1130
1767 1240
;
data data2;
input startdt enddt total;
format startdt date9. enddt date9.;
cards;
1657 1834 12300
1557 1758 16800
1789 1789 12300
1788 1345 12383
1899 1899 13250
;
proc sql;
create table data3 as
select * from data1 as x left join data2 as y
on x.dt>=y.startdt and x.dt<=y.enddt;
quit;
Here, we are getting cartision product. But,I want left
join report consisting of this program. It should not get
duplicate values. you can modify the program also.
Will it bother you if the guy at the next desk times the
frequency and duration of your bathroom or coffee breaks on
the grounds that ?you are getting paid twice as much as he
is??
Hello,
I have PROC SQLs results group by 3 fields and I use SUM and
COUNT functions in SQL. The problem is when I try to display
my result with PROC TABULATE. I am getting very big
numbers. I believe I make a mistake some where in Tabulate.
Here is my Proc Tabulate.
PROC TABULATE DATA=OUT04_05 FORMAT=12.;
CLASS YR CENTRE VISA / PRELOADFMT EXCLUSIVE;
VAR NEWUSER FRAUD TRANSFER AUTUSER REISSUE;
TABLE CENTRE ALL, (YR ALL)*VISA,
(NEWUSER*F=COMMA12. AUTUSER*F=COMMA12.
FRAUD*F=COMMA12. TRANSFER*F=COMMA12.
REISSUE*F=COMMA12.) /
MISSTEXT={LABEL='0'} PRINTMISS RTS=20;
FORMAT VISA VISAFMT.;
KEYLABEL SUM = ' '
ALL = 'TOTAL';
LABEL YR = 'DATE YEAR'
NEWUSER = 'TOTAL NEW ACCT'
TRANSFER = 'TOTAL TRANSFER'
FRAUD = 'TOTAL FRAUD TRANSFER'
AUTUSER = 'TOTAL AUTH USERS'
REISSUE = 'TOTAL REISSUE';
When I code it like : NEWUSER*N*F=COMMA12.
AUTUSER*N*F=COMMA12.
I get same amount numbers but to find a NEWUSER I use
COUNT(*) and to find AUTUSER I use SUM(xxxx) function so
both result shouldn’t be the same my problem is in this
point.
Could you tell me where the problem in code is. How can I
display my result?
TX.
180
Are you sensitive to code walk-throughs peer review or QC
review?
243
How will you react when, while consulting a SAS
documentation manual to get an answer to a problem, someone
says hey, I thought you were supposed to know all that
stuff already, and not have to look it up in a book?