Ändern Sie den Wert einer Spalte in R basierend auf den Werten von zwei anderen Spalten

LDT

Ich versuche, den Wert einer Spalte basierend auf den Werten von zwei anderen Spalten zu ändern. Es bereitet mir bisher ein bisschen Kopfschmerzen und ich bin mir nicht sicher, ob es überhaupt möglich ist.

Mein Datensatz sieht so aus. Eine Spalte ist die Zeit, und die anderen beiden Spalten spiegeln eine Elternbeziehung der Nachkommen wider. In seltsamen Fällen wie zum Zeitpunkt 1 habe ich den Nachwuchs "D", der zum ersten Mal im Datensatz auftaucht, und er war im vorherigen Zeitpunkt nicht da, um sowohl als Nachwuchs als auch als Vater gleichzeitig zu dienen Zeit.

Daten

structure(list(time = c(0L, 0L, 0L, 1L, 1L, 1L, 2L, 2L, 2L), 
    offspring = c("A", "B", "C", "A", "D", "E", "A", "F", "G"
    ), parent = c(NA, NA, NA, "A", "B", "D", "A", "A", "F")), class = "data.frame", row.names = c(NA, 
-9L))

Ich würde gerne helfen

  1. alle Nachkommen zu finden, die zu einem einmaligen Zeitpunkt existieren, aber nicht zu dem vorherigen (ohne Berücksichtigung des Zeitpunkts 0) und sowohl als Nachkommen als auch als Vater wie D und F zu dienen

  2. Wenn ich sie finde, möchte ich einen genauen Zeitpunkt um 0,5 reduzieren

time  offspring  parent
 0       A        NA
 0       B        NA
 0       C        NA
 1       A        A
 0.5     D        B 
 1       E        D
 2       A        A
 1.5     F        A
 2       G        F

Jede Hilfe oder Anleitung in dieser Ausgabe wäre sehr dankbar.

daniellga

In data.table, wenn Sie möchten:

library(data.table)

DT <- data.table(time = c(0,0,0,1,1,1,2,2,2),
                 offspring = c('A', 'B', 'C', 'A', 'D', 'E', 'A', 'F', 'G'),
                 parent = c(NA, NA, NA, 'A', 'B', 'D', 'A', 'A', 'F'))

for (i in seq_len(nrow(DT))) {
  DT[i, time := fifelse(time != 0 & offspring %chin% DT[, parent] & !(offspring %chin% DT[seq_len(i-1), offspring]),
                        time - 0.5,
                        time)]
}

> DT
   time offspring parent
1:  0.0         A   <NA>
2:  0.0         B   <NA>
3:  0.0         C   <NA>
4:  1.0         A      A
5:  0.5         D      B
6:  1.0         E      D
7:  2.0         A      A
8:  1.5         F      A
9:  2.0         G      F

mit dplyr:

library(dplyr)
library(tibble)

tbl <- tibble(time = c(0,0,0,1,1,1,2,2,2),
              offspring = c('A', 'B', 'C', 'A', 'D', 'E', 'A', 'F', 'G'),
              parent = c(NA, NA, NA, 'A', 'B', 'D', 'A', 'A', 'F'))

for (i in seq_len(nrow(tbl))) {
  tbl[i,][['time']] <- tbl[i, ] %>% mutate(time = if_else(time != 0 &
                                         offspring %in% tbl[['parent']] &
                                         !(offspring %in% tbl[seq_len(i-1),][['offspring']]),
                                       time - 0.5,
                                       time)) %>% pull(time)
}

> tbl
# A tibble: 9 x 3
   time offspring parent
  <dbl> <chr>     <chr> 
1   0   A         NA    
2   0   B         NA    
3   0   C         NA    
4   1   A         A     
5   0.5 D         B     
6   1   E         D     
7   2   A         A     
8   1.5 F         A     
9   2   G         F   

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

Ändern Sie den Wert einer Spalte basierend auf einer anderen Spalte (für bestimmte Zeilen).

Es wird versucht, die Werte einer Spalte basierend auf den eindeutigen Werten von zwei anderen Spalten beizubehalten

Ändern Sie basierend auf dem Wert in einer Spalte den Wert in einer anderen Spalte gruppenübergreifend

Pandas groupby: Ändern Sie die Werte in einer Spalte basierend auf den Werten in einer anderen Spalte

Schleifen in Python: Ändern Sie eine Spalte basierend auf den Werten in anderen Spalten

Ändern Sie den Wert einer Spalte basierend auf einer Änderung in einer anderen Spalte

Ersetzen Sie die Werte von zwei Datenrahmenspalten basierend auf den Werten einer Spalte eines anderen Datenrahmens

Ermittelt die mittlere Spalte basierend auf den gruppierten Werten von zwei anderen Spalten

Berechnen Sie den Wert in der dritten Spalte basierend auf den Werten in anderen Spalten, aber anderen Zeilen

Erstellen von Spalten in einem Datenrahmen basierend auf den Werten einer Spalte in einem anderen Dataset

Hinzufügen von Werten zu einer neuen Spalte basierend auf den beiden anderen Spalten

Ändern Sie den Wert einer Spalte basierend auf einer anderen Spalte

Erstellen Sie eine Verkettung von Werten in Pandas basierend auf den Werten einer anderen Spalte

Ändern Sie den Wert in zwei Spalten basierend auf zwei anderen Spalten

Gibt einen booleschen Wert basierend auf den booleschen Werten von zwei anderen Spalten zurück

Ändern Sie den Wert einer bestimmten Anzahl von Rasterzellen basierend auf einem anderen Raster in R

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

Setzen Sie den Wert einer Spalte basierend auf dem Wert in einer anderen Spalte in R

Wie kann ich den Wert einer Spalte basierend auf den Werten von zwei anderen Spalten in der Tabelle ändern?

Gibt es eine Möglichkeit, den Wert in einer Spalte basierend auf (Liste) von Werten in einer anderen Spalte in Pandas zu ändern?

Teilen Sie jeden Wert in einer Spalte durch den größten Wert basierend auf den Werten einer anderen Spalte (Betreff)

Subtrahieren von Werten in einer Spalte basierend auf zwei anderen Spalten in R

Excel: Erstellen Sie Spalten basierend auf den Werten einer Spalte UND einer anderen Spaltenkategorie

Überprüfen Sie den Unterschied in einer Spalte basierend auf doppelten Werten in den anderen beiden Spalten

Gruppieren Sie Werte aus einer Spalte basierend auf den Werten einer anderen Spalte in R

Ändern Sie den Wert der Spalte von Dataframe basierend auf dem Wert einer anderen Spalte

Ändern Sie den Wert einer Spalte basierend auf dem Wert einer anderen Spalte mit Pandas

Verwenden Sie Pandas, um den Mindestwert in einer Spalte basierend auf den Kategorieebenen von zwei anderen Spalten zu finden

Erhöhen Sie den Wert einer Spalte basierend auf Werten in einer anderen Spalte