2017-12-19 17 views
1

Ich versuche, eine MDM-Datei mit HLM 7 Student-Version zu erstellen, aber da ich keinen Zugriff auf SPSS habe, versuche ich meine Daten mit ASCII-Eingabe zu importieren. Als Teil dieses Prozesses muss ich das Datenformat Fortran eingeben. Versuchen Sie, ich könnte diesen Schritt nicht verstehen. Könnte jemand, der mit Fortran (oder besser HLM selbst) vertraut ist, mir erklären, wie das funktioniert? Hier ist mein derzeitiges VerständnisBedeutung von 3F7.1 in Fortran Datenformat

From the example EG3.DAT they give 

    (A4,1X,3F7.1) 

I think 

A4 signifies that the ID is 4 characters long. 
1X means skip a space. 
F.1 means that it should read 1 decimal places. 

Ich bin sehr verwirrt darüber, was 3F7 bedeuten könnte.

EG3.DAT

2020 380.0 40.3 12.5 
2040 502.0 83.1 18.6 
2180 777.0 96.6 44.4 

Im Folgenden sind Beispiele aus den Hilfedokumenten.

Rules for format statement Format statement example

EG1 data format EG2 data format EG3 data format

+0

Es gibt viele Fragen über Fortran Format auf dieser Seite. Es ist wirklich gut zu versuchen, zuerst zu suchen. Oder schauen Sie in eine Dokumentation oder ein Tutorial http://pages.mtu.edu/~shene/COURSES/cs201/NOTES/chap05/format.html –

+0

Beachten Sie, dass HLM nicht Fortran ist, aber etwas verwandt ist. http://www.ssicentral.com/hlm/ Ich weiß nichts darüber, aber seien Sie sich bewusst, dass es Unterschiede in der Handhabung von E/A geben könnte. In * fortran * ist es fast immer vorzuziehen, keine explizite Formatierung für * input * zu verwenden, da die listgesteuerte Eingabe sehr mächtig/flexibel ist. – agentp

+0

Vielen Dank für Ihre Hilfe. Ich habe es nach vielem Versuch und Irrtum herausgefunden und hätte es ohne all deine Hilfe nicht geschafft. Ich werde die vollständige Prozedur in der Antwort veröffentlichen, falls jemand anderes ein Excel-Dokument in MDM für HLM konvertieren muss. – TurtleDown

Antwort

0

In Fortran, so genannte Daten bearbeiten Deskriptoren (die die Eingabe oder Ausgabe von Daten formatieren) möglicherweise wiederholen Spezifikationen.

Im Format (A4,1X,3F7.1) sind die Datenbearbeitungsdeskriptoren A4 und F7.1. Nur F7.1 hat eine Wiederholungsspezifikation (die Nummer vor der F). Das bedeutet einfach, dass das Format so aussieht, als ob der Deskriptor wiederholt würde: wie F7.1, F7.1, F7.1. Mit einer Wiederholungsspezifikation von 1, oder nicht gegeben, gibt es nur die einzige Erscheinung.

Das Format der Frage, dann ist, wie

(A4,1X,F7.1,F7.1,F7.1) 

Dieses Format ist eine, die durch die Regeln in einem der Bilder der Frage bereitgestellt bedeckt ist. Insbesondere ist der Aspekt der Wiederholungsspezifikation in Regel 2 mit dem entsprechenden Beispiel der Regel 3 angegeben. Ferner kann in Fortran ein Wiederholungszählungsspezifizierer auch * als Spezialfall sein: das ist wie eine außergewöhnlich große Wiederholungszahl . *(F7.1) wäre wie F7.1, F7.1, F7.1, .... Ich sehe keinen Hinweis darauf, dass dies von HLM unterstützt wird, aber wenn dies erforderlich ist, kann stattdessen eine sehr große Anzahl von Wiederholungen angegeben werden.


In 1X die 1 ist keine Wiederholungs Spezifikation, sondern ein integraler und notwendig, einen Teil der Position Bearbeitungsbeschreibung.

1

Eine ähnliche Frage ist Explaining Fortran Write Format. Leider behandelt es den F-Deskriptor nicht explizit.

3F7.1 bedeutet 3 Gleitkommazahlen, jede gedruckt über 7 Zeichen, jeweils mit einer Dezimalzahl hinter dem Komma. Führende Zeichen sind Leerzeichen.

Zum Lesen brauchen Sie nicht die .1 Informationen überhaupt, lesen Sie einfach eine Fließkommazahl aus diesen 7 Zeichen.

Sie haben die Bedeutung von A4 (vier Zeichen) und 1X (ein Leerzeichen) richtig erraten.

+0

Es gibt einen Haken beim Lesen und F7.1 - Wenn Sie keinen Basispunkt in die Eingabe einschließen, wird angenommen, dass die letzte Ziffer der Bruch ist. Zum Beispiel erhalten 1234567 gelesen mit F7.1 Sie 123456.7. Aber wenn Sie in 123.456 lesen, würden Sie das bekommen. (Ich würde versuchen, den zusätzlichen Effekt des P-Skalierungsfaktors zu erklären, aber ich würde ein anderes Bier oder drei brauchen, um dem gerecht zu werden.) –

+0

Das stimmt, aber hier nicht importiert. Ich nehme an, dass OP Fortran nicht verwendet, liest nur die von Fortran geschriebenen Daten unter Verwendung dieses Deskriptors und oben gezeigt. –

+0

Aus einem der Bilder schließe ich sogar, dass in der Untergruppe der unterstützten Fortran-Regeln die '.d'-Komponente tatsächlich benötigt wird (größer als Null). – francescalus

0

Verfahren für HLM für MDM-Datei aus Excel zu machen:

-Stellen Sie sicher, dass alle Zeichen in allen Spalten in einer Reihe aufstellen

  • eine Spalte auswählen, dann mit der rechten Maustaste und wählen Zellen formatieren
  • dann klicken Sie auf ‚Benutzerdefiniert‘ und gehen Sie auf die ‚Type‘ Feld und geben Sie die Nummer von 0s muss man alles in einer Reihe aufstellen

-Remove alle die Tabs aus dem Dokument und ersetzen sie durch Leerzeichen.

  • Öffnen Sie das Dokument in Wort und verwenden Sie suchen und ersetzen

-Um das Dokument als .dat

  • Zuerst es als TXT Dann

  • speichern speichern geöffnet es im Editor und speichern Sie es als .dat

Um das Datenformat (Fortran-Style)

Das Programm will die Datendatei Raum von Raum zu lesen, geben, damit Sie es perfekt angeben müssen, so dass es die ganzen richtig eingestellt liest. Wenn etwas aus ist, sogar durch ein einzelnes Leerzeichen, dann sind Ihre beschreibenden Statistiken wackelig, verglichen mit dem, wenn Sie sie in einem anderen Programm überprüfen.

  • Setzen Sie den Code mit Klammern()
  • Teilen Sie die Einträge mit Kommas,

-need ID-Spalte für alle Ebenen

  • ID-Spalte so sortiert werden muss, dass es ist in der Reihenfolge vom kleinsten bis größten

  • Verwenden A # mit # die Anzahl der Zeichen in der ID

  • Verwenden Sie eine X1 bis bewegen sich von der ID in der nächsten Spalte

-need zu sagen, wie viele Zeichen benötigt werden, in jeder Spalte zu sein

  • Verwenden F
  • nach F die Anzahl der Zeichen, die für diese Spalte -Verwendung F # (# = Anzahl)

  • ist
  • Es müssen genügend Zeichenabstände sein, einen bieten ‚Lücke‘ Raum zwischen jeder Spalte

  • Es müssen Zeichenabstände genug sein, um für das Dezimalsystem

  • Im Rahmen der F Sie zulassen müssen die Anzahl der Dezimalstellen

  • Sie tun dies, um anzugeben, die durch einen Punkt nach dem F-Wert hinzufügen und dann eine Anzahl der Räume zu repräsentieren Sie benötigen -F #. #

  • Sie können eine Nummer vor dem F verwenden, um es zu "wiederholen". Not notwendig, obwohl. . - # F # #

Alles in allem sollte es in etwa so aussehen:

(A4,X1,F4.0,F5.1) 

Hilfreiche Links:

https://books.google.de/books?id=VdmVtz6Wtc0C&pg=PA78&lpg=PA78&dq=data+format+fortran+style+hlm&source=bl&ots=kURJ6USN5e&sig=fdtsmTGSKFxn04wkxvRc2Vw1l5Q&hl=en&sa=X&ved=0ahUKEwi_yPurjYrYAhWIJuwKHa0uCuAQ6AEIPzAC#v=onepage&q&f=false http://www.ssicentral.com/hlm/help6/error/Problems_creating_MDM_files.pdf http://www.ssicentral.com/hlm/help7/faq/FAQ_Format_specifications_for_ASCII_data.pdf