CoDe SAS German

LesezeichenAbonnierenRSS-Feed abonnieren
Katrin1606
Fluorite | Level 6

Hallo zusammen,

 

ich benötige bitte Eure Hilfe:

 

Ausgagsbasis (Spalten):

 

Variable 1 heißt „Datum1“ à Numerisch, Format: yymmdd10.

Variable 2 heißt „Datum2“ à Alphanumerisch, Format: $10.

 

Ziel: es sollen folgende neue Spalten mit den nachfolgend genannten Formaten erstellt werden. Es soll jeweils der Monatsname wie beschrieben eingefügt werden.

 

  1. Neue Variable = Monat (Format: numerisch) à extrahiere den Monat aus der numerischen Variable 1
  2. Neue Variable = Monat 1 (Format: numerisch) à extrahiere den Monat aus der alphanumerischen Variable 2
  3. Neue Variable = Monat 2 (Format: alphanumerisch) à extrahiere den Monat aus der numerischen Variable 1
  4. Neue Variable = Monat 3 (Format: alphanumerisch) à extrahiere den Monat aus der alphanumerischen Variable 2

 

 

Ich habe jetz wirklich lange probiert, aber irgendwie bekomme ich das mit dem umformatieren von alphanum. In numerisch und umgekehrt nicht hin.

 

Vielen Dank!

2 ANTWORTEN 2
Kurt_Bremser
Super User

Verwende substr(), um Teile eines Strings aus dem alphanumerischen Datum zu erhalten.

Verwende input() mit passenden Informat, um Strings in Zahlen umzuwandeln.

Verwende month(), um den Monat aus einem SAS-Datum zu erhalten.

Verwende put() mit einem passenden Format, um eine Zahl in einen String zu verwandeln.

Alle Data Step Funktionen sind hier dokumentiert.

Kurt_Bremser
Super User

Das Ganze in Code sieht dann so aus:

data have;
input numdate :yymmdd10. @1 chardate :$10.;
format numdate yymmdd10.;
datalines;
2019-06-12
;

data want;
set have;
format
  num_month_from_numdate
  num_month_from_chardate z2.
  char_month_from_numdate
  char_month_from_chardate $2.
;
num_month_from_numdate = month(numdate); /* simple */
char_month_from_chardate = substr(chardate,6,2); /* also simple */
num_month_from_chardate = input(substr(chardate,6,2),2.); /* slightly complicated */
char_month_from_numdate = put(month(numdate),z2.); /* also slightly complicated */
run;

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

Diskussionsstatistiken
  • 2 Antworten
  • 7379 Aufrufe
  • 0 Kudos
  • 2 in Unterhaltung