Seite 1 von 1

Hilfe beim kopieren von Daten zwischen Matrizen

Verfasst: Di Apr 28, 2020 8:21 pm
von Phiber
Hallo zusammen,

ich bin ein kompletter Anfänger in R, kann nur ein bisschen Matlab.

ich würde gerne aus einer CSV datei die daten einlesen und dann diese Daten in verschiedene neu erzeugte Matrizen einfügen.
dazu überrpüfe ich eine bestimmte zeile ob der text in diesem feld mit meiner bedingung übereinstimmt und wenn das der Fall ist soll die komplette zeile aus meinem Datensatz in die 1 zeile meiner neuen Matrix YY geschrieben werden. bei der nächten übereinstimmung dann in die nächste Zeile der Matrix YY.

mein Code sieht bis jetzt so weit aus

Code: Alles auswählen

# Datei als CSV einlesen 
Daten=read.csv("Test.csv", sep=";", header=T)

Anzahl_Messungen = dim(Daten)[1] # Anzahl Messungen
Anzahl_Werte= dim(Daten)[2]  # Anzahl werte

#Variablen erstellen
i<-1
g<-1
h<-1
Anzahl_Tag<-0;
Anzahl_Nacht<-0;

#Bestimmen von der Anzahl der Tag und Nacht Messungen

for(i in 1:Anzahl_Messungen)
{
if(Daten[i,6] =="Tag")
  {
  Anzahl_Tag = Anzahl_Tag+1
  }
else if(Daten2[i,6] == "Nacht")
  {
  Anzahl_Nacht = Anzahl_Nacht+1
  }
}

#Erstellen der Matrizen für die Aufteilung

Daten_Tag <- matrix(1, nrow = Anzahl_Tag,ncol =Anzahl_Werte )
Daten_Nacht <- matrix(1, nrow = Anzahl_Nacht,ncol =Anzahl_Werte )


#Erstellen der Matrizen für die Nacht und Tag Messungen

for(i in 1:Anzahl_Messungen) 
{
if(Daten2[i,6] =="Tag") 
	{
        for (k in 1:Anzahl_Tag)
          {
          Daten_Tag[g,k] <- Daten[i,k] 
          }
        g=g+1
  	}
 else if(Daten[i,6] == "Nacht")
 	{ 
        for (k in 1:Anzahl_Nacht)
          {
          Daten_Nacht[h,] = Daten[i,] 
          }
         h=h+1
  	 }
}
leider bekomme ich die Zeile aus meinem Datensatz nicht in meine neu Matrix. Der Datensatz hat den Typ list und beinhaltet Zahlen, Wörter, Datum und Zeitanzeige so wie Sonderzeichen wie z.B das µ.

Würde mich über jede Hilfe freuen da ich ja das Programm lernen möchte

Viele Grüße und Vielen Dank schon mal

Re: Hilfe beim kopieren von Daten zwischen Matrizen

Verfasst: Di Apr 28, 2020 8:41 pm
von jogo
Hallo Phiber,

willkommen im Forum!
Mir scheint, Du möchtest einfach ein Teilmenge der Daten zusammenstellen:

Code: Alles auswählen

# Datei als CSV einlesen 
Daten <- read.csv("Test.csv", sep=";", header=TRUE)

Daten_Tag   <- subset(Daten, Daten[,6] =="Tag")
Daten_Nacht <- subset(Daten, Daten[,6] =="Nacht")
oder per split in eine Liste von Dataframes:

Code: Alles auswählen

# Datei als CSV einlesen 
Daten <- read.csv("Test.csv", sep=";", header=TRUE)

L <- split(Daten, Daten[,6])
Kannst Du bitte mal den output von

Code: Alles auswählen

str(Daten)
liefern. Vielleicht geht es noch eleganter.
Die Begrifflichkeit in R sind etwas anders als in Matlab bzw. octave.
Eine Matrix ist ein umgebrochener Vektor. Ein Vektor kann nur gleichartige Daten enthalten, z.B. character.
read.table() liefert einen Dataframe. Ein Dataframe ist eine Liste von Vektoren, diese Vektoren sind alle gleich lang.

Gruß, Jörg

Re: Hilfe beim kopieren von Daten zwischen Matrizen

Verfasst: Di Apr 28, 2020 8:42 pm
von bigben
Hallo!

Poste doch mal eine Test.csv und wie das Ergebnis aussehen soll. Ich denke, das sollte viel einfacher gehen.

Kennst Du die Funktion subset() ?

LG,
Bernhard