2010-09-15 4 views
1

Comment lire un fichier de données une ligne à la fois dans SAS? Dis, j'ai 3 lignes de donnéesLecture par ligne dans SAS

1.0 3.0 5.6 7.8 
2.3 4.9 
3.2 5.3 6.8 7.5 3.9 4.1 

Je dois lire chaque ligne dans une autre variable. Je veux que les données ressemblent.

A 1.0 
A 3.0 
A 5.6 
A 7.8 
B 2.3 
B 4.9 
C 3.2 
C 5.3 
C 6.8 
C 7.5 
C 3.9 
C 4.1 

J'ai essayé beaucoup de choses. Si elle a un nom de variable avant chaque point de données, le code suivant fonctionne très bien

INPUT group $ x @@; 

Je ne peux pas comprendre comment s'y prendre. Quelqu'un peut-il me guider s'il vous plaît? Merci

+0

Bonjour, pouvez-vous indiquer à quoi vous voulez que vos données résultantes ressemblent? Ce que vous entendez par "chaque ligne dans une variable différente" n'est pas clair. – sasfrog

Répondre

4

Je pense que cela produira presque exactement le résultat que vous voulez. vous pouvez appliquer un format à la variable Groupe.

data orig; 
    infile datalines missover pad; 
    format Group 4. Value 4.1; 
    Group = _n_; 
    do until (Value eq .); 
     input value @; 
     if value ne . then output; 
     else return; 
    end; 
datalines; 
1.0 3.0 5.6 7.8 
2.3 4.9 
3.2 5.3 6.8 7.5 3.9 4.1 
run; 

proc print; run; 
/* 
Obs Group Value 

    1  1  1.0 
    2  1  3.0 
    3  1  5.6 
    4  1  7.8 
    5  2  2.3 
    6  2  4.9 
    7  3  3.2 
    8  3  5.3 
    9  3  6.8 
10  3  7.5 
11  3  3.9 
12  3  4.1 */ 
+0

Génial. Merci. Une chose de plus, comment puis-je ajouter, disons A, B, C au lieu de 1,2 dans le groupe. J'ai essayé IF _n_ = 1 PUIS SET A; ELSE SI _n_ = 2 PUIS ENSEMBLE B; Ça ne marche pas. Je reçois une erreur – y2p

+1

Presque: vous voulez si _n_ = 1 alors Group = 'A'; sinon si _n_ = 2 alors Group = 'B'; etc. Ou, comme le suggère @rkoopmann, utilisez un format. – sasfrog