Einzelne Werte mit -1 multiplizieren

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

Moderatoren: EDi, jogo

Antworten
FridaKoriander
Beiträge: 37
Registriert: Do Dez 01, 2016 9:08 pm

Einzelne Werte mit -1 multiplizieren

Beitrag von FridaKoriander »

Bildschirmfoto 2016-12-16 um 11.21.15.png
Hallo zusammen!

Ich müsste in meinem Datensatz (s. Anhang) alle Reaktionszeiten (rt) der nicht korrekten Antworten (corr = 0) mit -1 multiplizieren. Kann mir da jemand weiterhelfen....?

Vielen Dank schon mal und viele Grüße!
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von jogo »

Hallo Frida,

eine Möglichkeit ist:

Code: Alles auswählen

test$rt[test$corr==0] <- -test$rt[test$corr==0]
eine andere Möglichkeit:

Code: Alles auswählen

test <- within(test, rt <- ifelse(corr==0, -rt, rt))
oder

Code: Alles auswählen

test$rt <- with(test, ifelse(corr==0, -rt, rt))
Viele Grüße, Jörg
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von bigben »

Hey Jörg, hast Du

Code: Alles auswählen

test$rt <- test$rt*(1 - 2*[test$corr==0]) 
vergessen?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von jogo »

bigben hat geschrieben:Hey Jörg, hast Du

Code: Alles auswählen

test$rt <- test$rt*(1 - 2*[test$corr==0]) 
vergessen?
jein, eher habe ich so eine Lösung nicht in Erwägung gezogen.
Als ich programmieren gelernt habe, lautete ein Grundsatz: Multiplikationen sind teuer

Meine Vorschläge kommen ganz ohne Multiplikationen aus. Ich bin sogar der Meinung, dass ich mich an die von Dir ausgerufene Programmiermaxime gehalten habe und sozusagen kantig programmiert habe. :lol:

Sicher gibt es noch viele andere Möglichkeiten, um das genannte Problem zu lösen.

Viele Grüße
Jörg
FridaKoriander
Beiträge: 37
Registriert: Do Dez 01, 2016 9:08 pm

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von FridaKoriander »

Hallo zusammen :-)

vielen Dank für die Hilfe!
Es hat mit Jörgs ersten Vorschlag gut geklappt.

Viele Grüße!
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von bigben »

@jogo: "-rt" ist keine Multiplikation?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von jogo »

bigben hat geschrieben:@jogo: "-rt" ist keine Multiplikation?
wenn das mit der internen Zahlendarstellung immer noch so ist, wie ich es gelernt habe, dann ist es nur ein Invertieren des Vorzeichenbits.

https://en.wikipedia.org/wiki/IEEE_floating_point
https://de.wikipedia.org/wiki/IEEE_754#Allgemeines

R scheint hier aber eine tolle Leistung beim Interpreter abzuliefern:

Code: Alles auswählen

library(microbenchmark)

x <- rnorm(10000)
microbenchmark(m0= 0-x, chsign= -x, mult= -1*x, mult.dec=-1.0*x, mult2=2.1*x, times=1000)
Die Spezifik der Multiplikationen -1*x und -1.0*x wird erkannt und ist schneller als eine normale Multiplikation wie z.B. mult2.

Nachtrag: komisch, bei einem weiteren Lauf war auch mult2 kaum langsamer.

Viele Grüße, Jörg
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von bigben »

Hallo Jörg,

ich hätte nicht gedacht, dass ein Interpreter soweit optimiert und diese Fälle unterscheidet. Die Fallunterscheidung kostet dann ja bei jeder Multiplikation wieder CPU-Zyklen. Entweder unterschätzen ich, wie teuer Multiplikationen sind, oder ich unterschätzen, wie oft dieser Spezialfall vorkommt.

Liebe Grüße,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von jogo »

Hallo Bernhard,
bigben hat geschrieben:ich hätte nicht gedacht, dass ein Interpreter soweit optimiert und diese Fälle unterscheidet. Die Fallunterscheidung kostet dann ja bei jeder Multiplikation wieder CPU-Zyklen.
vielleicht muss der Interpreter nur einmal über die Eingabezeile drüber; oder hackt das Paket microbenchmark den R-Interpreter?
Entweder unterschätzen ich, wie teuer Multiplikationen sind, oder ich unterschätzen, wie oft dieser Spezialfall vorkommt.
oder hier hat sich in den vergangenen 30 Jahren etwas bei den Prozessoren getan, dass eine multiplikation nicht merklich teurer ist als eine einfache Bit-Operation.
Oder der Interpreter löst den Vorzeichenoperator auch nur in eine Multiplikation auf, womit Du Recht hättest mit "-x ist eine Multiplikation".

Liebe Grüße,
Jörg
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Einzelne Werte mit -1 multiplizieren

Beitrag von bigben »

Jedenfalls hast Du sehr schön kantig programmiert!
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten