So erstellen Sie eine neue Spalte basierend auf anderen Spalten mit if-Bedingungen in r

Noel

Es kann keine Möglichkeit gefunden werden, eine neue Spalte basierend auf den if-Bedingungen für eine Gruppe von Ereignissen in einer Spalte zu generieren.

Die Spalte mit der Bezeichnung "BF" repräsentiert die (i-3) der Flusssäule und wird für jede "Ereignis" -Gruppe dieselbe BF sein. In Zeile 5 ist der Wert von "BF" beispielsweise 39, was der vorherige dritte Wert der Flussspalte (Fluss für Zeile 2) für alle "2" in der Ereignisspalte ist. Das Problem ist, dass BF [i] nicht größer als flow [i] sein kann. Wenn BF [i] größer als Fluss [i] ist, sollte der BF der (i-4) oder (i-5) oder (1-6) ... des Flusses sein, bis BF [i] gleich ist oder kleiner als Durchfluss [i]. In Zeile 10 ist beispielsweise der Wert der Spalte "BF" größer als der Wert der Spalte "flow". Daher ist der Wert von BF_1 (Spalte, die ich erstellen möchte) in Zeile 10 37, was den nächstniedrigeren Wert darstellt Durchflusswert, in diesem Fall der Durchfluss [i-6].

Als Beispiel haben wir den folgenden Datenrahmen:

flow<- c(40, 39, 38, 37, 50, 49, 46, 44, 43, 45, 40, 30, 80, 75, 50, 55, 53, 51, 49, 100)
event<- c(1,1,1,1,2,2,2,2,2,3,3,3,4,4,4,5,5,5,5,6)
BF<- c(NA, NA, NA, NA, 39, 39, 39, 39, 39, 46, 46, 46, 45, 45, 45, 80, 80, 80, 80, 53)
a<- data.frame(flow, event, BF)

Dies ist die Wunschausgabe, die ich suche. Ich möchte die Spalte BF_1 erstellen.

   flow event BF  BF_1
1    40   1   NA   NA
2    39   1   NA   NA
3    38   1   NA   NA
4    37   1   NA   NA
5    50   2   39   39
6    49   2   39   39
7    46   2   39   39
8    44   2   39   39
9    43   2   39   39
10   45   3   46   37
11   40   3   46   37
12   30   3   46   37
13   80   4   45   45
14   75   4   45   45
15   50   4   45   45
16   55   5   80   30
17   53   5   80   30
18   51   5   80   30
19   49   5   80   30
20  100   6   53   53

Gibt es eine Möglichkeit, die Spalte BF_1 zu generieren? Bitte lassen Sie mich Ihre Gedanken wissen. Ich arbeite mit for-Schleifen und verwende if-Bedingungen, kann jedoch den BF-Wert nicht für die gesamte Gruppe der Ereignisspalte halten.

beavis11111

Codierung ein bisschen ineffizient, könnte dplyr etc .. verwenden, aber es wird die Arbeit erledigen und mit der angegebenen BF_1Spalte übereinstimmen

flow <- c(40, 39, 38, 37, 50, 49, 46, 44, 43, 45, 40, 30, 80, 75, 50, 55, 53, 51, 49, 100)
event <- c(1,1,1,1,2,2,2,2,2,3,3,3,4,4,4,5,5,5,5,6)
BF <- c(NA, NA, NA, NA, 39, 39, 39, 39, 39, 46, 46, 46, 45, 45, 45, 80, 80, 80, 80, 53)
a <- data.frame(flow, event, BF)

a$BF_1 <- NA #default to NA first

for(i in 1:length(unique(a$event))){

  if(is.na(a[a$event == i, "BF"][1])) next

  if(a[a$event == i, "BF"][1] < a[a$event == i, "flow"][1]) a[a$event == i, "BF_1"] <- a[a$event == i, "BF"][1]

  if(a[a$event == i, "BF"][1] > a[a$event == i, "flow"][1]) {
    head <- min(which(a$event==i))-6 
    if (min(head-6) < 0) head <- 1 #making sure it doesn't overflow to row 0
    a[a$event == i, "BF_1"] <- min( a[  head:min(which(a$event==i)), "flow"] ) #fill the min of the subset flow column given position
  }

}

a

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Erstellen Sie eine neue Spalte basierend auf mehreren Bedingungen in anderen Spalten in R

Erstellen Sie eine neue Spalte in R basierend auf den Bedingungen in zwei anderen Spalten

Erstellen Sie eine neue Spalte mit dplyr basierend auf Zeichenfolgenwerten in allen anderen Spalten in einem Datenrahmen in R

Pandas - So erstellen Sie eine Spalte mit 3 Ausgaben basierend auf Bedingungen für mehrere Spalten

Erstellen Sie eine neue Spalte basierend auf den Bedingungen in anderen Spalten

So erstellen Sie eine neue Spalte basierend auf mehreren Bedingungen in einer anderen Spalte

So gruppiert nach mehreren Spalten und erstellen Sie eine neue Spalte basierend auf Bedingungen in Python?

Erstellen Sie eine neue Spalte in R, indem Sie bestimmte Spalten basierend auf mehreren Bedingungen zusammenfassen

Erstellen Sie eine neue Spalte basierend auf Bedingungen mit unterschiedlichen Spalten

Erstellen Sie eine neue Pandas-Spalte mit Anwenden basierend auf den Bedingungen mehrerer anderer Spalten

Erstellen Sie eine neue Spalte basierend auf anderen Spalten

Erstellen Sie eine neue Spalte mit Werten basierend auf Bedingungen

Erstellen Sie eine neue Spalte basierend auf anderen Spaltenwerten mit Bedingungen

Erstellen Sie eine neue Spalte in Pandas basierend auf mehreren spezifischen Bedingungen für mehrere Spalten - Pandas

Erstellen Sie eine neue Spalte basierend auf mehreren Bedingungen in r

Pandas: Erstellen Sie eine Spalte mit einem Zeichenfolgenwert basierend auf den Bedingungen in anderen Spalten

So erstellen Sie eine neue Spalte basierend auf Werten aus anderen Spalten in einem Pandas DataFrame

So erstellen Sie eine neue Spalte basierend auf Berechnungen in anderen Spalten in PySpark

So erstellen Sie eine neue Spalte in einem DataFrame basierend auf Werten von zwei anderen Spalten

So erstellen Sie neue Spalten mit Zählwerten basierend auf den Werten einer anderen Spalte SQL

Python Pandas: Erstellen Sie eine neue Spalte mit Mindestwerten basierend auf eindeutigen Bezeichnern in anderen Spalten

Pandas - Erstellen Sie eine neue Spalte mit einem Wert basierend auf dem Namen der anderen Spalten

So erstellen Sie eine neue Spalte basierend auf den Bedingungen in R.

So erstellen Sie eine Spalte basierend auf Bedingungen mit Zeilen

Pandas erstellen eine neue Spalte basierend auf anderen anderen Spalten

R: So erstellen Sie eine neue Variable basierend auf dem Namen einer anderen Spalte

Erstellen Sie eine neue Python DataFrame-Spalte basierend auf den Bedingungen mehrerer anderer Spalten

Erstellen Sie eine neue Spalte im Datenrahmen basierend auf den Bedingungen in vorhandenen Spalten

Erstellen Sie eine neue Spalte basierend auf mehreren Bedingungen in mehreren Spalten

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv