Advertisement
Guest User

ALEDDDDD

a guest
Dec 1st, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 4.39 KB | None | 0 0
  1. /*1 : Import des données*/
  2. proc contents data=source.demography short;
  3. proc contents data=source.physical_exam short;
  4. proc contents data=source.vital_signs short;
  5. proc contents data=source.treatment_assignment short;
  6. run;
  7. /*------------------------------------------------------2.1----------------------------------------------------------*/
  8.  
  9. /* 2.1.1 : Age Today*/
  10. DATA source.DM;
  11.     TITLE "Demography w/ current age";
  12.     SET source.demography;
  13.     ATTRIB AGE_TODAY LABEL="Age today" LENGTH=3;
  14.     AGE_TODAY=year(today()) - birthdtyy;
  15. PROC PRINT DATA=source.dm LABEL NOOBS;
  16. run;
  17.  
  18. /* 2.1.2 : Fusion DM et Treatment_assignment*/
  19. DATA source.DM;
  20. TITLE "Demography merged w/ treatment";
  21. MERGE source.dm source.treatment_assignment;
  22. BY USUBJID;
  23. RUN;
  24.  
  25. PROC PRINT DATA=source.DM LABEL NOOBS;
  26. run;
  27.  
  28. /* 2.1.3 : Age moyen max et min pour chaque groupe de traitement*/
  29. PROC MEANS DATA=source.DM VAR MAX MIN NONOBS
  30. MAXDEC=2;
  31. VAR age;
  32. CLASS trtcd;
  33. ;
  34. title "Age statistics by treatment grp";
  35. /*-----------------------------------------------2.2------------------------------------------------------------*/
  36.  
  37. /*2.2.1*/
  38. DATA source.TAILLE;
  39. SET SOURCE.PHYSICAL_EXAM;
  40. WHERE HGT is not null;
  41. KEEP USUBJID HGT;
  42. RUN;
  43. /*On récupere le poids et l'id de la visite correspondante*/
  44. DATA source.POIDS;
  45. SET SOURCE.PHYSICAL_EXAM;
  46. WHERE WGT is not null;
  47. KEEP USUBJID WGT WGTU VISID;
  48. RUN;
  49. /*Récupération des dates des visites*/
  50. DATA source.DATE;
  51. SET SOURCE.DATE_OF_VISIT;
  52. KEEP USUBJID VISID VISDT;
  53. RUN;
  54. /*Tri par USUBJID pour la fusion des 3 tables*/
  55. PROC SORT DATA=source.TAILLE;
  56. BY USUBJID;
  57. RUN;
  58. PROC SORT DATA=source.POIDS;
  59. BY USUBJID VISID;
  60. RUN;
  61. PROC SORT DATA=source.DATE;
  62. BY USUBJID VISID;
  63. RUN;
  64. /*Fusion du poids et de la date de visite*/
  65. DATA source.imc;
  66. MERGE source.POIDS (IN=mark1) source.DATE (IN=mark2);
  67. BY USUBJID VISID;
  68. if mark1 and mark2 then output;
  69. RUN;
  70. /*Fusion de la taille et de la table imc*/
  71. DATA source.imc;
  72. MERGE source.TAILLE source.imc;
  73. BY USUBJID;
  74. RUN;
  75. /*Tri pour avoir la dernière visite en premier*/
  76. PROC SORT DATA=source.imc;
  77. BY USUBJID DESCENDING VISDT;
  78. RUN;
  79. /*Supprime les doublons pour garder seulement la dernière visite de chaque individu*/
  80. PROC SORT DATA=source.imc nodupkey;
  81. BY USUBJID;
  82. RUN;
  83. /* creer un nouveau dataset ou il y a l'imc calcule*/
  84. DATA source.CalculImc;
  85. SET source.imc;
  86. ATTRIB imc
  87.         LABEL="IMC"
  88.         LENGTH=3
  89.         ;
  90.         imc= (WGT/((HGT/100)*(HGT/100)));
  91. RUN;
  92.  
  93. /*2.2.2: Merge PE */
  94. DATA source.Physicalvisit;
  95. MERGE source.physical_exam (IN=mark1) source.DATE (IN=mark2);
  96. BY USUBJID VISID;
  97. If mark1 and mark2 then output;
  98. RUN;
  99. /*fusion de physicalvisit avec dm pour avoir le dataset PE*/
  100. DATA source.PE;
  101. MERGE source.physicalvisit source.dm;
  102. BY USUBJID;
  103. RUN;
  104. PROC PRINT DATA=source.PE;
  105.  
  106. /*-----------------------------------------------2.3------------------------------------------------------------*/
  107.  
  108. /*2.3.1 : Tension et 2.3.2 : Diagnostic*/
  109. DATA source.Tension;
  110. TITLE "Tension";
  111. SET source.vital_signs;
  112. ATTRIB tension label="Diagnostique tension" LENGTH=$40;
  113. IF SYS > 180 OR DIA > 110 THEN
  114. tension = "Hypertension sévère";
  115. ELSE IF SYS > 159 OR DIA > 99 THEN
  116. tension = "Hypertension modérée";
  117. ELSE IF SYS > 139 OR DIA > 89 THEN
  118. tension = "Hypertension légère";
  119. ELSE IF SYS > 129 OR DIA > 84 THEN
  120. tension = "Tension normale élevée";
  121. ELSE IF SYS > 119 OR DIA > 79 THEN
  122. tension = "Tension normale";
  123. ELSE tension = "Tension optimale";
  124. PROC PRINT DATA=source.Tension LABEL NOOBS;
  125. run;
  126.  
  127. /*2.3.3 : Fusion avec Date_of_visit*/
  128. DATA source.VS;
  129. TITLE "Tension merged w/ Date_of_visit";
  130. MERGE source.Tension source.Date_of_visit;
  131. BY USUBJID;
  132. IF SYS=. OR DIA =. THEN tension = "Non calculé";
  133. run;
  134. PROC PRINT DATA=source.Tension LABEL NOOBS;
  135. run;
  136.  
  137. /*2.3.4 : Fusion VS et PE*/
  138. PROC SORT data=source.PE;
  139. BY USUBJID;
  140. run;
  141. PROC SORT data=source.VS;
  142. BY USUBJID;
  143. run;
  144. DATA source.VS_PE;
  145. TITLE "VS merged w/ PE";
  146. MERGE source.VS source.PE;
  147. BY USUBJID;
  148. run;
  149. PROC PRINT DATA=source.VS_PE LABEL NOOBS;
  150. run;
  151.  
  152.  
  153. /*2.3.5 : Fréquence paramètres*/
  154. PROC SORT DATA=source.vs_pe OUT = source.vs_pe;
  155. BY TRTCD;
  156. run;
  157. PROC FREQ DATA=source.vs_pe ORDER=freq;
  158. TABLES SYS*TEMP / LIST NOCUM OUT=source.sys_avg_by_trtmntgrp;
  159. BY TRTCD;
  160. run;
  161.  
  162.  
  163. /*2.3.6 : Égalité moyenne tension systolique */
  164. PROC ANOVA DATA=source.vs_pe;
  165. CLASS TRTCD;
  166. MODEL SYS = TRTCD;
  167. run;
  168.  
  169. PROC FREQ DATA=source.vs_pe;
  170. TABLE SYS / chisq;
  171. run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement