Rechercher : dans
Par :

1 ligne par sujet sous SAS

Dernière réponse le 17 jui 2009 à 18:04:25 justine24, le 24 oct 2006 à 09:18:23 
 Signaler ce message aux modérateurs

Bonjour à tous.

J'ai un petit problème sous SAS.
J'ai un fichier qui contient un évenement par ligne (donc un individu peut se retrouver sur plusieurs lignes). Je voudrai tout simplement modifier ce fichier afin d'avoir une seule ligne par sujet.
Merci de votre aide!

Meilleures réponses pour « 1 ligne par sujet sous SAS » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Skyblog - Titre sur deux lignes VoirPour mettre un titre d'article de votre skyblog sur deux lignes, rien de plus simple. Prenons cet exemple : Ligne 1 Ligne 2 Il vous suffira de taper ce titre dans votre article : [align=center]Ligne 1[/align] [align=center]Ligne...

1

hamid, le 13 déc 2006 à 09:31:54

J'ai un petit problème sous SAS.
J'ai un fichier qui contient un évenement par ligne (donc un individu peut se retrouver sur plusieurs lignes). Je voudrai tout simplement modifier ce fichier afin d'avoir une seule ligne par sujet.
Merci de votre aide!
idem
data toto (keep=NSSI datfin dteffet);
set aa.base_db2;
;
run;

data sortie (keep=NSSI x1 x2 d1 d2);
length d1 $10.
d2 $10.
x1 5.
x2 5.
;
do _n_=1 by 1 until(last.NSSI);
set toto;
by NSSI;
if first.NSSI then do;
d1=put(datfin,ddmmyy10.);
x1=datfin;
* put d1= x1= ;
end;
if last.NSSI then do;
d2=put(datfin,ddmmyy10.);
x2=datfin;
end;
end;
output ;
run;
data sortie1 (keep=NSSI d1 sign);
length date $10.
;
set sortie;
retain sign "A";
do i=1 to _n_;
if x1>=x2 then sign="A";
else sign="B";
if sign="B" then d1=d2;
end;
* output;
run;

Répondre à hamid

2

hssissen, le 13 déc 2006 à 15:28:04

Salut,
Un moyen de le faire avec:

PROC SQL; create table ta_table as
select distinct ton_id
from ta_table;
quit;

Mais pourquoi tu veux effacer les autres lignes?

Répondre à hssissen

3

Kalderon, le 18 mai 2007 à 12:12:02

Bonjour,

une manière plus simple:

Proc sort data=nomdelatable NODUPKEY;
    by nom_individu;
Run;


La commande NODUPKEY permet de supprimer les doublons. Associée avec le by+une variable au choix (qui identifie, genre "nom" ou "numero"), elle affiche une ligne par individu, sans doublon.

A+

Répondre à Kalderon

4

sophie, le 28 oct 2007 à 18:06:03

Bonjour,

Sinon, y'a une formation bien faite sur SAS Base sur :
http://www.egilia-learning.com/fr/sas_base/

Répondre à sophie

5

1598, le 16 jun 2008 à 18:11:17

Bonjour,

J'ai un fichier qui résume de nombreuses données par entreprise.
(Entr Donnée1 Donnée 2 Donnée3 ...)

Parfois, une entreprise a plusieurs données3, et j'ai donc plusieurs lignes pour une seule entreprise :
(toutes les autres données sont reprises dans chacune des lignes)

Entr Donnée1 Donnée 2 Donnée3 ...
A 20000 4000 Xavier
B 35000 2700 Jean
B 35000 2700 Gilbert
C 37000 7300 Françoise
D 43000 5600 Mathilde
D 43000 5600 Valentin
D 43000 5600 Augustin

(La colonne Données3 me donne le nom de l'actionnaire, mais j'ai plusieurs actionnaires pour une seule entreprise, donc j'ai plusieurs lignes avec à chaque fois les mêmes données sauf pour la colonne actionnaire qui change)

Comment puis je ne conserver qu'une seule ligne par entreprise et avoir plusieurs colonnes Données3 (Données3.1 Données3.2 Données3.3 ...)

Je peux extraire les données d'une autre manière, et dans ce cas, j'ai une seule ligne par entreprise mais la colonne Données3 contient les noms de chaque actionnaire à la suite (exemple : Jean|Gilbert) et dans ce cas, je voudrais que chaque actionnaire soit dans une colonne distincte)

Merci d'avance pour votre aide

(je ne m'y connais pas trop en SAS, mais je travaille principalement en data set ou avec des procédures du style proc freq, proc means ...)

Répondre à 1598

6

celia, le 11 jan 2009 à 16:04:06

Bonjour,
je voudrai savoir comment faire pour savoir si on a sur plusieurs variables d'une tables les memes caractères?
par exemple:
Nom prenom
Denis Frank
frank hul
comment savoir l'existance du mot frank dans les deux colonnes?
merci

Répondre à celia

8

 papilluce, le 17 jui 2009 à 18:04:25

Bonjour,
je voudrai savoir comment faire pour savoir si on a sur plusieurs variables d'une tables les memes caractères?
par exemple:
Nom prenom
Denis Frank
frank hul
comment savoir l'existance du mot frank dans les deux colonnes?
merci


1 / Si tu veux savoir si "franck" existe dans les deux colonnes, tu peux faire un truc du genre:

data nom;
set tatable;
keep Nom;
rename Nom=newvar;
run;
data prenom;
set tatable;
keep prenom;
rename prenom=newvar;
run;
proc sort data=nom;
by newvar;
run;
proc sort data=prenom;
by newvar;
run;
data tout;
merge nom (in=A) prenom (in=B);
if A and B;
run;

Ainsi tu ne garde que les valeurs qui sont dans les deux colonnes.


2 / Si tu veux savoir si "franck" existe plusieurs fois dans toute la table, tu peux faire un truc du genre:

data nom;
set tatable;
keep Nom;
rename Nom=newvar;
run;
data prenom;
set tatable;
keep prenom;
rename prenom=newvar;
run;
data tout;
set tot_1 toto_2;
run;
proc sort data=tout nodupkeys dupout=nomprenomendouble;
by newvar;
run;

Ainsi tu ne garde que les valeurs qui sont présentes plusieurs fois dans la table de départ.

J'espère que ça t'aide

Répondre à papilluce
Collection CommentÇaMarche.net