WPS/SAS/R Class (confidence) intervals
IML has an interface to R
IML might have this function, I am not sure.
I think you want left close ']' otherwise tou could miss and observation
https://communities.sas.com/t5/General-SAS-Programming/Class-confidence-intervals/m-p/347383
HAVE
====
Up to 40 obs SD1.HAVE total obs=50
Obs NUMS
1 3
2 15
3 24
4 28
5 33
6 35
7 38
8 42
9 43
...
46 42
47 43
48 14
49 30
50 10
WANT
====
Up to 40 obs from c2wps total obs=10
Obs C1 FREQ
1 (0,5] 1
2 (5,10] 2
3 (10,15] 7
4 (15,20] 2
5 (20,25] 4
6 (25,30] 6
7 (30,35] 11
8 (35,40] 8
9 (40,45] 6
10 (45,50] 3
The MEANS Procedure
Analysis Variable : NUMS
N Lower 95% Upper 95%
C1 Obs Mean Std Dev CL for Mean CL for Mean
------------------------------------------------------------------------------
(0,5] 1 3.0000000 . . .
(5,10] 2 8.5000000 2.1213203 -10.5593071 27.5593071
(10,15] 7 13.5714286 1.3972763 12.2791636 14.8636936
(15,20] 2 18.5000000 2.1213203 -0.5593071 37.5593071
(20,25] 4 23.2500000 1.5000000 20.8631653 25.6368347
(25,30] 6 28.0000000 1.4142136 26.5158739 29.4841261
(30,35] 11 33.2727273 1.5550504 32.2280302 34.3174244
(35,40] 8 37.6250000 1.1877349 36.6320287 38.6179713
(40,45] 6 42.5000000 1.0488088 41.3993426 43.6006574
(45,50] 3 47.6666667 0.5773503 46.2324491 49.1008842
------------------------------------------------------------------------------
WORKING CODE
R
c1 <- cut(have$NUMS, breaks = seq(0, 50, by = 5));
proc means
* _ _ _
_ __ ___ __ _| | _____ __| | __ _| |_ __ _
| '_ ` _ \ / _` | |/ / _ \_____ / _` |/ _` | __/ _` |
| | | | | | (_| | < __/_____| (_| | (_| | || (_| |
|_| |_| |_|\__,_|_|\_\___| \__,_|\__,_|\__\__,_|
;
options validvarname=upcase;
libname sd1 "d:/sd1";
data sd1.have;
input nums @@;
cards4;
3 15 24 28 33 35 38 42 43 38 36 34 29 25 17 7 34 36 39 44 31
26 20 11 13 22 27 47 39 37 34 32 35 28 38 41 48 15 32 13
14 22 35 48 31 42 43 14 30 10
;;;;
run;quit;
*____ _ _ _
| _ \ ___ ___ | |_ _| |_(_) ___ _ __
| |_) |____/ __|/ _ \| | | | | __| |/ _ \| '_ \
| _ <_____\__ \ (_) | | |_| | |_| | (_) | | | |
|_| \_\ |___/\___/|_|\__,_|\__|_|\___/|_| |_|
;
%utl_submit_wps64('
libname sd1 "d:/sd1";
options set=R_HOME "C:/Program Files/R/R-3.3.2";
libname wrk "%sysfunc(pathname(work))";
proc r;
submit;
library(haven);
have<-read_sas("d:/sd1/have.sas7bdat");
c1 <- cut(have$NUMS, breaks = seq(0, 50, by = 5));
c1;
c2<-as.data.frame(table(c1));
endsubmit;
import r=c2 data=wrk.c2wps;
import r=c1 data=wrk.c1wps;
run;quit;
');
data cutval;
merge c1wps sd1.have;
run;quit;
/*
Up to 40 obs WORK.CUTVAL total obs=50
Obs C1 NUMS
1 (0,5] 3
2 (10,15] 15
3 (20,25] 24
4 (25,30] 28
5 (30,35] 33
6 (30,35] 35
7 (35,40] 38
8 (40,45] 42
*/
proc means data=cutval mean std clm;
class c1;
var nums;
run;quit;
NOTE: Using R version 3.3.2 (2016-10-31) from C:/Program Files/R/R-3.3.2
NOTE: Submitting statements to R:
> library(haven);
> have<-read_sas("d:/sd1/have.sas7bdat");
> c1 <- cut(have$NUMS, breaks = seq(0, 50, by = 5));
> c1;
> c2<-as.data.frame(table(c1));
NOTE: Processing of R statements complete
12 import r=c2 data=wrk.c2wps;
NOTE: Creating data set 'WRK.c2wps' from R data frame 'c2'
NOTE: Column names modified during import of 'c2'
NOTE: Data set "WRK.c2wps" has 10 observation(s) and 2 variable(s)
13 import r=c1 data=wrk.c1wps;
NOTE: Creating data set 'WRK.c1wps' from R data frame 'c1'
NOTE: Column names modified during import of 'c1'
NOTE: Data set "WRK.c1wps" has 50 observation(s) and 1 variable(s)
14 run;
NOTE: Procedure r step took :
real time : 0.655
cpu time : 0.015
15 quit;
NOTE: Submitted statements took :
real time : 0.702
cpu time : 0.046
... View more