Options spool; /* Generated Code (IMPORT) */ /* Source File: Augustcleaned.csv */ /* Source Path: /Folder/Augustcleaned.csv */ /* Code generated on: 9 Oct 2023, 14:40:17 */ proc sql; %if %sysfunc(exist(V0096C01.'Data'n)) %then %do; drop table V0096C01.'Data'n; %end; %if %sysfunc(exist(V0096C01.'Data'n,VIEW)) %then %do; drop view V0096C01.'Data'n; %end; quit; FILENAME REFFILE DISK '/Folder/Augustcleaned.csv'; PROC IMPORT DATAFILE=REFFILE DBMS=CSV OUT=V0096C01.'Data'n; GETNAMES=YES; RUN; PROC CONTENTS DATA=V0096C01.'Data'n; RUN; proc sql; %if %sysfunc(exist(V0096C01.IMPORT1)) %then %do; drop table V0096C01.IMPORT1; %end; %if %sysfunc(exist(V0096C01.IMPORT1,VIEW)) %then %do; drop view V0096C01.IMPORT1; %end; quit; FILENAME REFFILE DISK '/Folder/Augusttermdocumentwithchild.csv'; PROC IMPORT DATAFILE=REFFILE DBMS=CSV OUT=V0096C01.IMPORT1; GETNAMES=YES; RUN; PROC CONTENTS DATA=V0096C01.IMPORT1; RUN; /* Generated Code (IMPORT) */ /* Source File: Augustterms1.csv */ /* Source Path: /Folder/Augustterms1.csv */ /* Code generated on: 9 Oct 2023, 14:43:22 */ proc sql; %if %sysfunc(exist(V0096C01.IMPORT2)) %then %do; drop table V0096C01.IMPORT2; %end; %if %sysfunc(exist(V0096C01.IMPORT2,VIEW)) %then %do; drop view V0096C01.IMPORT2; %end; quit; FILENAME REFFILE DISK '/Folder/Augustterms1.csv'; PROC IMPORT DATAFILE=REFFILE DBMS=CSV OUT=V0096C01.IMPORT2; GETNAMES=YES; RUN; PROC CONTENTS DATA=V0096C01.IMPORT2; RUN; /* Generated Code (IMPORT) */ /* Source File: goodterms.csv */ /* Source Path: /Folder/goodterms.csv */ /* Code generated on: 9 Oct 2023, 14:44:39 */ proc sql; %if %sysfunc(exist(V0096C01.IMPORT3)) %then %do; drop table V0096C01.IMPORT3; %end; %if %sysfunc(exist(V0096C01.IMPORT3,VIEW)) %then %do; drop view V0096C01.IMPORT3; %end; quit; FILENAME REFFILE DISK '/Folder/goodterms.csv'; PROC IMPORT DATAFILE=REFFILE DBMS=CSV OUT=V0096C01.IMPORT3; GETNAMES=YES; RUN; PROC CONTENTS DATA=V0096C01.IMPORT3; RUN; /* * * Task code generated by SASĀ® Studio 5.2 * * Generated on '06/10/2023, 09:37' * Generated by 'wib041' * Generated on server 'dcvslx3257' * Generated on SAS platform 'Linux LIN X64 3.10.0-1160.21.1.el7.x86_64' * Generated on SAS version 'V.03.05M0P111119' * Generated on browser 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.98' * Generated on web client 'https://dhs.sasviyapml.csda.gov.au/SASStudioV/main?locale=en_GB&launchedFromAppSwitcher=true&useTransitionSplash=true' */ DATA V0096C01.Data2/ single=yes; SET V0096C01.Data; Index=_N_; run; ods noproctitle; libname _tmpcas_ cas caslib="CASUSER"; /* Load default English stop list */ proc casutil; load casdata="en_stoplist.sashdat" INCASLIB="referencedata" casout="_stoplist_" outcaslib="CASUSER" replace; quit; proc textmine data=V0096C01.DATA2; var mergedtxt; doc_id Index; parse stop=_tmpcas_._stoplist_ termwgt=none cellwgt=none outterms=V0096C01.IMPORT2 outchild=V0096C01.IMPORT1; svd k=25 numlabels=5; run; proc delete data=_tmpcas_._stoplist_; run; libname _tmpcas_; DATA V0096C01.Data1/ single=yes; SET V0096C01.Data2; KEEP Index Feedback_ID 'Feedback Type'n 'Service Brand'n 'Feedback Channel'n 'Date Created'n BICZICFFBGUI 'Service Type'n 'Service Detail'n 'Reason Level 1'n 'Digital Product'n 'Feedback Provider Type'n 'Feedback Status'n 'Original Escalation Level'n Escalated CreatorUserID FeedbackFinalisedby 'Finalised by Zone/Branch'n WMEmployeeResponsible 'Responsible group'n 'Complaint Outcome Channel'n 'Complaint Outcome'n 'Reason Level 2'n 'Date Created Cal. Yr/wk'n; run; PROC SQL; SELECT COUNT(Index) INTO:size FROM V0096C01.Data1; quit; proc sort data=V0096C01.IMPORT1 out=IMPORTA; by _DOCUMENT_; run; DATA IMPORTB; SET V0096C01.IMPORT2; KEEP Term Role Attribute Key Parent_id; run; DATA IMPORTC; SET V0096C01.IMPORT3; Term1=Term; Role1=Role; Attribute1=Attribute; Key1=Key; Parent_id1=Parent_id; KEEP Term1 Role1 Attribute1 Key1 Parent_id1; run; PROC SQL; SELECT COUNT(Term) INTO: size1 FROM IMPORTB; quit; PROC SQL; SELECT COUNT(Term1) INTO: size2 FROM IMPORTC; quit; %macro splittermdocument(howmany); %Let c=%sysevalf(&size/300,ceil); %do k=1 %to &c; Data IMPORTA&k.; set IMPORTA; /*x= %sysevalf(_DOCUMENT_>300*(&k-1) AND _DOCUMENT_<=300*(&k),boolean);*/ if _DOCUMENT_>300*(&k-1) AND _DOCUMENT_<=300*(&k) then do; /*put _DOCUMENT_; put "hello";?*/ output; end; run; proc SQL; SELECT COUNT(_DOCUMENT_) INTO: A&k. FROM IMPORTA&k.; quit; %if &k=&c %then %do; proc SQL; SELECT MAX(_DOCUMENT_) INTO: doc FROM IMPORTA&c.; quit; %end; %Let m=%sysfunc(Max(&size1,&size2,&&A&k.)); %if &size1<&m %then %do; Data concat1&k. (keep=con:); %do i=1 %to (&m-&size1); con=''; output; %end; run; Data IMPORTB&k./ single=yes; SET IMPORTB concat1&k.; Index=_N_; run; %end; %else %do; Data IMPORTB&k./ single=yes; SET IMPORTB; Index=_N_; run; %end; %if &size2<&m %then %do; Data concat2&k. (keep=con1:); %do i=1 %to (&m-&size2); con1=''; output; %end; run; Data IMPORTC&k./ single=yes; SET IMPORTC concat2&k.; Index=_N_; run; %end; %else %do; Data IMPORTC&k./ single=yes; SET IMPORTC; Index=_N_; %end; %if &&A&k.<&m %then %do; Data concat3&k. (keep=con2:); %do i=1 %to (&m-&&A&k.); con2=''; output; %end; run; Data IMPORTAA&k./ single=yes; SET IMPORTA&k. concat3&k.; Index=_N_; run; %end; %else %do; Data IMPORTAA&k./ single=yes; SET IMPORTA&k.; Index=_N_; run; %end; Data Predictor&k. (keep=hello); if _n_=1 then do; %if &k<=(&c-1) %then %do; %Let x=300; array good&k.{&x,8084}; %end; %else %do; x=&doc-(&c-1)*300; array good&k.{&x,8084}; %end; do z=1 to &x; do y=1 to 8084; good&k.{z,y}=0; end; end; array hello{8084}; array B {&size1,5}; array C{&size2,5}; array A{&&A&k.,3}; end; Set IMPORTAA&k.; Set IMPORTC&k.; Set IMPORTB&k.; if Index<=&size1 then do; B{Index,1}=Term; B{Index,2}=Role; B{Index,3}=Attribute; B{Index,4}=Key; B{Index,5}=Parent_id; end; if Index<=&size2 then do; C{Index,1}=Term1; C{Index,2}=Role1; C{Index,3}=Attribute1; C{Index,4}=Key1; C{Index,5}=Parent_id1; end; if Index<=&&A&k. then do; A{Index,1}=_TERM_; A{Index,2}=_DOCUMENT_; A{Index,3}=_COUNT_; end; if Index=&m then do; do i=1 to &&A&k.; put i; t=0; p=1; do while (t=0); if B{p,4}=A{i,1} then do; t=1; ter=B{p,1}; rol=B{p,2}; end; p=p+1; end; p1=0; u=0; do while (u=0); if C{p1,1}=ter AND C{p1,2}=rol then do; good&k.{A{i,2},C{p1,5}}= good&k.{A{i,2},C{p1,5}}+ A{i,3}; u=1; end; p1=p1+1; end; end; do r=1 to x; do h=1 to 8084; hello{h}=good&k.{r,h}; end; output Predictor&k.; end; end; %end; %mend splittermdocument; %splittermdocument(10); %macro indeed(howmany) /single=yes; Data Predictor; %do i=1 %to %sysevalf(&size/300,ceil); if _N_<= 300*&i AND _N_>300*(&i-1) then do; Set Predictor&i.; end; %end; index=_n_; run; %mend indeed; %indeed(10); proc sql; create table data as select * from V0096C01.Data1 as a join Predictor on a.Index=Predictor.index; quit;