am OP Basierend, es ist nicht direkt angegeben, ob die Rohdaten-Datei mehr Beobachtungen einer einzelnen Variablen enthält, oder sollte in n-Tupel gebrochen werden. Da das OP angibt, dass read.table in einer einzelnen Zeile zu dem Ergebnis führt, dass es mehrere Zeilen enthält, können wir daraus schließen, dass die korrekte Technik scan()
und nicht read.table()
ist.
Wenn die Daten in der Rohdatendatei eine einzelne Variable darstellen, funktioniert die in Kommentaren von @docendo veröffentlichte Lösung ohne zusätzlichen Aufwand. Ansonsten sind zusätzliche Arbeiten erforderlich, um die Daten zu säubern.
Hier ist ein Ansatz mit scan()
, die liest die Datei in einen Vektor, und bricht es in Beobachtungen mit 5 Variablen.
rawData <- "4.0945725440979;4.07999897003174;4.0686674118042;4.05960083007813;4.05218315124512;4.0945725440979;4.07999897003174;4.0686674118042;4.05960083007813;4.05218315124512"
value <- scan(textConnection(rawData),sep=";")
columns <- 5 # set desired # of columns
observations <- length(aVector)/columns
observation <- unlist(lapply(1:observations,function(x) rep(x,times=columns)))
variable <- rep(1:columns,times=observations)
data.frame(observation,variable,value)
... und die Ausgabe:
> data.frame(observation,variable,value)
observation variable value
1 1 1 4.094573
2 1 2 4.079999
3 1 3 4.068667
4 1 4 4.059601
5 1 5 4.052183
6 2 1 4.094573
7 2 2 4.079999
8 2 3 4.068667
9 2 4 4.059601
10 2 5 4.052183
>
die Daten an dieser Stelle in einem breiten Format ordentlich Daten mit reshape2::dcast()
gesetzt umgewandelt werden können.
Beachten Sie, dass diese Lösung erfordert, dass die Anzahl der Datenwerte in der Rohdatendatei durch die Anzahl der Variablen gleichmäßig teilbar ist.
Haben Sie 'sep ="; "' in 'read.table' verwendet? – akrun
Überprüfen Sie die Dokumentation von' read.csv' indem Sie '? Read.csv' eingeben. Dort findest du was @akrun erwähnt. (oder '? read.table', natürlich) –
Es sieht so aus, als hätten Sie es hier nicht mit rechteckigen Daten zu tun. Daher empfehle ich 'scan (file =" path/to/myfile.txt ", sep ="; ")' '. Verwenden Sie anschließend "data.frame", um das Ergebnis in die Spalte data.frame zu stellen. –