Hilfe beim kopieren von Daten zwischen Matrizen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Phiber
Beiträge: 1
Registriert: Di Apr 28, 2020 7:49 pm

Hilfe beim kopieren von Daten zwischen Matrizen

Beitrag 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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Hilfe beim kopieren von Daten zwischen Matrizen

Beitrag 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
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Hilfe beim kopieren von Daten zwischen Matrizen

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten