Das ist also einige Beispieldaten Ich habe: die neue Spalte wiederholt 1s bis signal3 ändert sich von 1 bisReplizieren von Werten nach einer bedingten Anweisung ist erfüllt?
signal1 signal2 signal3
1 0 1
1 1 1
1 0 1
1 0 1
1 0 1
1 0 1
1 0 0
Und ich will eine vierte Spalte hinzuzufügen, so dass, wenn signal1==signal2==signal3
beide 1 sind, 0.
So aus dem obigen Beispiel, ich möchte, wie etwas generieren:
signal1 signal2 signal3 signal_generate
1 0 1 0
1 1 1 1
1 0 1 1
1 0 1 1
1 0 1 1
1 0 1 1
1 0 0 0
ich das denke durch eine ifelse
Aussage erreicht werden würde, aber ich habe viel Mühe über diese scheinbar einfache Aufgabe ist. Ich denke an etwas entlang der Linien zu tun:
signal_generate <- ifelse(data[,1]==data[,2]&data[,3]>0, rep(data[,3]==1), 0)
Aber ich kann nicht herausfinden, wie signal3
zu bekommen die richtige Anzahl der Male zu wiederholen.
Edit: Ich realisiere ein ifelse
wäre albern, weil es nur Zeilen betrachten würde, in denen die Bedingung signal1 == signal2 == signal3
genau treffen. Ich bin immer noch furchtbar fest und Hilfe würde sehr geschätzt werden!
Danke. Schnelle Frage: Funktioniert 'as.integer ((rowSums (df [, 1: 3])) == 3L') nur mit Tabellen oder kann dies mit' data.frame' verwendet werden? Ich habe versucht, dies auf meinen tatsächlichen Daten zu implementieren und es gab "0" für alles zurück. – Nikitau
von der Hilfe für rowSums "... für numerische Arrays (oder Datenrahmen)". Ich habe kein Beispiel für Ihre Daten - am besten zu verwenden 'dput' und und hinzufügen das zur Frage Mein Beispiel ist ein Datenrahmen Ich schlage vor, Sie zu debuggen, indem Sie kleinstes Bit des Codes von innerstem zu äußersten ausführen und Ergebnisse überprüfen. Überprüfen Sie auch für Ihre Klammern – epi99