Spalte auffüllen mit for() Schleifen

Fragen, die sich auf kein spezielles Verfahren beziehen.

Spalte auffüllen mit for() Schleifen

Beitragvon Bartfledermaus » Mo 14. Apr 2014, 16:44

Hallo,

ich habe folgenden Datensatz und möchte nun eine zusätzlich Spalte einfügen:

> # Spalte mit Paarcodes einfügen und füllen
> treatment$Paarung<- NA
> head(treatment)
Vollzeit Code Code2 Paarung
2 2013-09-09 20:15:00 08 10 NA
21 2013-09-09 20:16:00 08 10 NA
22 2013-09-09 20:17:00 08 10 NA
23 2013-09-09 20:18:00 09 10 NA
24 2013-09-09 20:19:00 09 10 NA
25 2013-09-09 20:20:00 09 10 NA


Hier stehen die Paarungen drin:

>head(paar)
Paarung paarcode1 paarcode2
1 P01 08 09
2 P02 09 08
3 P03 09 10
4 P04 10 09
5 P05 08 10
6 P06 10 08

Nachher sollte das Ganze so aussehen:
Vollzeit Code Code2 Paarung
2 2013-09-09 20:15:00 08 10 P05
21 2013-09-09 20:16:00 08 10 P05
22 2013-09-09 20:17:00 08 10 P05
23 2013-09-09 20:18:00 09 10 P03
24 2013-09-09 20:19:00 09 10 P03
25 2013-09-09 20:20:00 09 10 P03

Versucht hatte ich so etwas:

> for (i in treatment$Code){
for (j in paar$Paarung){
+ treatment$Paarung[which(treatment$Code[i]==paar$paarcode1 & treatment$Code2[i]==paar$paarcode2)] <- paar$Paarung
+ }
}

Kann mir jemand einen Tipp geben, wie das wirklich funktionieren könnte? Wäre toll :-)

LG
Chris
Zuletzt geändert von Bartfledermaus am Mo 14. Apr 2014, 17:13, insgesamt 1-mal geändert.
Bartfledermaus
Grünschnabel
Grünschnabel
 
Beiträge: 2
Registriert: Mo 14. Apr 2014, 15:32
Danke gegeben: 1
Danke bekommen: 0 mal in 0 Post

Re: Spalte auffüllen mit for() Schleifen

Beitragvon bele » Mo 14. Apr 2014, 17:07

Hallo Bartfledermaus,

ich verstehe Dein Beispiel nicht. Warum wird in den ersten drei Zeilen mit Code 8 und Code2 10 nicht P05 sondern P01 herausgesucht? Nun, ohne es zu verstehen würde ich reflexhaft vermuten, dass Du nach der Funktion merge() suchst.

Wenn Du Bei der for-Schleife bleiben willst, dann geht das schon auch irgendwie. Vermute mal so was wie
Code: Alles auswählen
for (zeile in 1:nrow(treatment))
  treatment$Paarung[zeile] <- paar[which(paar$paarcode1==treatment$Code[zeile] && paar$paarcode2==treatment$Code2[zeile])[1],1]

Das ist jetzt ungetestet und sieht irgendwie unschön komplex aus. Chance für Syntaxfehler in dieser Version also noch hoch. Versuch lieber, ob Du mit merge() hin kommst.

LG,
Bernhard

PS: Das ist ja keine Statistik-Frage sondern eine Frage zu R. Wenn Du mit meinen Hinweisen nicht hin kommst, versuch mal forum.r-statistik.de .
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5784
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 15
Danke bekommen: 1358 mal in 1345 Posts

folgende User möchten sich bei bele bedanken:
Bartfledermaus

Re: Spalte auffüllen mit for() Schleifen

Beitragvon Bartfledermaus » Mo 14. Apr 2014, 17:29

Hallo Bernhard,

mit gleichen Spaltennamen und merge () war es natürlich viel einfacher. Manchmal steht man zu dicht am Zaun um die Lücke 3 m weiter zu sehen ;-)

Lieben Dank. Auch für den Verweis auf das R-Forum.

LG
Chris
Bartfledermaus
Grünschnabel
Grünschnabel
 
Beiträge: 2
Registriert: Mo 14. Apr 2014, 15:32
Danke gegeben: 1
Danke bekommen: 0 mal in 0 Post


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast