Bonjour,
je dispose d'une table à 400 variables et 100000 ligne environ,
je cherche un moyen pour supprimer les variables à une modalité sans devoir les chercher à la main
Merci pour vos réponses
Bonjour,
je dispose d'une table à 400 variables et 100000 ligne environ,
je cherche un moyen pour supprimer les variables à une modalité sans devoir les chercher à la main
Merci pour vos réponses
Hello,
tu peux essayer ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 %macro plurimodalites(table); /*liste des variables de table*/ proc contents data=&table out=tabvar (keep=name) noprint; run; proc sql noprint; select distinct name into:list_var separated by "-" from tabvar; drop table tabvar; quit; %do i=1 %to 400; proc sql noprint; select count(distinct %scan(&liste_var,&i)) into: nbmod /*nb de modalités de la i-ème variable de table*/ from &table; quit; %if &nbmod=1 %then %do; data &table (drop= %scan(&liste_var,&i)); set &table; run; %end; %end; %mend; %plurimodalites(maTable);
merci pour ta repose![]()
j'ai aussi cherché de mon coté et j'ai trouver ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 ODS OUTPUT nLevels = work.cardinalites ; PROC FREQ DATA=work.test NLEVELS ; TABLE _ALL_ / NOPRINT ; RUN ; proc sort data=cardinalites; by Nlevels; run; PROC SQL NOPRINT ; SELECT STRIP(tableVar) INTO : listeDrop SEPARATED BY "," FROM work.cardinalites WHERE NLevels = 1 /**/ ; ALTER TABLE work.test DROP &listeDrop ; QUIT ;
Partager