Seite 1 von 1

Zeilen vertauschen

Verfasst: Sa Jul 01, 2017 6:32 pm
von FridaKoriander
Hallo zusammen,

ich würde in meinem Datenset gerne einzelne Zeilen vertauschen und habe bisher keine passende Antwort im Netz gefunden.
Beispiel: Eine Variable ist dreifach gestuft: A, B und C und in meinem Datenset nach A - B - C geordnet. Ich möchte nun jedoch B und C vertauschen, so dass die Reihenfolge A - C - B ist.

Also
Wert 1 A
Wert 2 B
Wert 3 C
Wert 4 A
Wert 5 B
Wert 6 C
usw...
soll zu
Wert 1 A
Wert 3 C
Wert 2 B
Wert 4 A
Wert 6 C
Wert 5 B
Wäre dankbar für einen Tipp!

Liebe Grüße!

Re: Zeilen vertauschen

Verfasst: Sa Jul 01, 2017 9:25 pm
von jogo

Code: Alles auswählen

Dataset[rep(seq(0,nrow(Dataset)-1,3), each=3) + c(1,3,2), ]
Gruß, Jörg

Re: Zeilen vertauschen

Verfasst: So Jul 02, 2017 1:47 pm
von FridaKoriander
Klappt wunderbar!

Vielen Dank!

Re: Zeilen vertauschen

Verfasst: So Jul 02, 2017 3:01 pm
von FridaKoriander
Jetzt hätte ich doch noch eine Frage...wie kann man denn dann bei einem Datenset bspw mit 9 Zeilen die Zeilen 4,5,6 mit 7,8,9 vertauschen?
Also so dass man die Reihenfolge 1,2,3,7,8,9,4,5,6 hat...?

Danke schon mal!

Re: Zeilen vertauschen

Verfasst: So Jul 02, 2017 4:37 pm
von bigben

Code: Alles auswählen

bsp <- data.frame(zahlen = 1:9, buchstaben = LETTERS[1:9])
bsp
bsp2 <- bsp[c(1,2,3,7,8,9,4,5,6),]
bsp2
LG,
Bernhard

Re: Zeilen vertauschen

Verfasst: So Jul 02, 2017 6:43 pm
von FridaKoriander
Top!
Vielen Dank!

Re: Zeilen vertauschen

Verfasst: Mi Jul 05, 2017 4:13 pm
von jogo
auch dies geht:

Code: Alles auswählen

bsp <- data.frame(zahlen = 1:9, buchstaben = LETTERS[1:9])
set.seed(305100)
bsp[sample(9),]
:mrgreen:

Gruß, Jörg

Re: Zeilen vertauschen

Verfasst: Mi Jul 05, 2017 9:08 pm
von bigben
Ja neee, is klaaar, ne?

Haste das wenigstens elegant parallelisiert, oder einfach drauf los...?

Re: Zeilen vertauschen

Verfasst: Mi Jul 05, 2017 9:55 pm
von jogo
Neben meiner Glaskugel liegt immer eine Brechstange für die hartnäckigen Fälle. ;)

hier die verwendete Brechstange:

Code: Alles auswählen

for (s in 1000:1000000) {
  set.seed(s)
  if (all(sample(9)==c(c(1,2,3,7,8,9,4,5,6)))) { print(s); break }
}