Я использую функцию "ifelse" в R и пытаюсь создать два новых столбца (то есть x1 и x2) из большого набора данных, подобного следующему фрейму данных
df <-
structure(
list(
id = c(1L, 2L, 3L, 4L,5L),
date1 = c("1/4/2004", "3/11/2004", "NA", "13/10/2004","11/3/2003"),
date2 = c("8/6/2002", "11/5/2004", "3/5/2004","25/11/2004","21/1/2004"),
s1=c(1,2,1,"NA","NA"),
date3=c("NA", "NA", "18/2/2006", "NA","NA"),
s2=c("NA","NA",2,"NA","NA")
),
.Names = c("id", "date1","date2","s1","date3","s2"),
class = "data.frame",
row.names = c(NA,-5L),
col_types = c("numeric", "date","date","numeric","date","numeric")
)
Новый столбецОжидается, что x1 будет иметь значение 3, если date1 не «NA» и соответствующая ячейка s1 имеет NA, в противном случае x1 должно быть значением s1.Аналогично, ожидается, что x2 будет иметь значение 3, если date1 не является «NA», а соответствующая ячейка s2 имеет NA, в противном случае x2 должно быть значением s2.
Для этого я использовал следующие коды
df$x1<-ifelse(!is.na(df$date1) & (df$s1=="NA"),d,df$s1)
df$x2<-ifelse(!is.na(df$date1) & (df$s2=="NA"),d,df$s2)
Этот код работает на приведенном выше кадре данных, но не работает с большим набором данных, при этом он не сообщает об ошибке.Под этим я подразумеваю, что код работает с большим набором данных без ошибок, но не выполняет ожидаемую функцию.Пожалуйста, я хотел бы знать, почему эта проблема возникает и как ее можно исправить.Я ценю любую помощь в этом.