Ich möchte eine Spalte von 0 und 1 basierend auf Ungleichungen von drei Spalten von Daten erstellen.Erstellen von Spalte 0 und 1 basierend auf Ungleichungen von drei Datumsspalten
Die Idee ist die folgende. Wenn event_date
vor death_date
oder study_over
, die die Spalte event
sollte == 1, wenn event_date
nach death_date
oder study_over
auftritt, sollte event
== 0. Beide event_date
und death_date
kann NAs enthalten.
set.seed(1337)
rand_dates <- Sys.Date() - 365:1
df <-
data.frame(
event_date = sample(rand_dates, 20),
death_date = sample(rand_dates, 20),
study_over = sample(rand_dates, 20)
)
Mein Versuch war die folgende
eventR <-
function(x, y, z){
if(is.na(y)){
ifelse(x <= z, 1, 0)
} else if(y <= z){
ifelse(x < y, 1, 0)
} else {
ifelse(x <= z, 1, 0)
}
}
ich es auf die folgende Weise verwenden
library(dplyr)
df[c(3, 5, 7), "event_date"] <- NA #there are some NA in .$event_date
df[c(3, 4, 6), "death_date"] <- NA #there are some NA in .$death_date
df %>%
mutate(event = sapply(.$event_date, eventR, y = .$death_date, z = .$study_over))
##Error: wrong result size (400), expected 20 or 1
##In addition: There were 40 warnings (use warnings() to see them)
Ich kann nicht herausfinden, wie dies zu tun. Irgendwelche Vorschläge?
Ihre Beschreibung (für mich) etwas inkonsistent scheint * „vor death_date ** oder ** study_over“ * seine ein und * "tritt nach death_date ** oder ** study_over "* es ist Null. Ist es möglich, dass es vor death_rate aber nach study_over sein könnte? Wenn ja, welchen Wert sollte es nehmen? – user20650
@ user20650 Ich konnte nicht herausfinden, wie man es fest in die Funktion einprogrammiert. Es wurde in post mit df [is.na (event), "event"] <- 0 behoben. – user6571411