Я пытаюсь добиться этого, используя следующие данные и код:
beg.new <-c(1, 0, 0, 0, 2, 3, 3)
GasBubbles<-c(0, 0, 0, 0, 0, 1, 2)
PF<- c(0, 0, 0, 1, 1, 0, 0)
debris<-c(0, 1, 0, 0, 0, 1, 0)
diveLocation<-c('Compliance', 'Compliance', 'Compliance', 'Lease',
'Lease', 'Lease', 'Lease')
nonComp<- NA
nonCompLease<- NA
df=data.frame(beg.new, GasBubbles, PF, debris, diveLocation, nonComp,
nonCompLease)
Предоставление кадра данных:
structure(list(beg.new = c(1, 0, 0, 0, 2, 3, 3), GasBubbles = c(0,
0, 0, 0, 0, 1, 2), PF = c(0, 0, 0, 1, 1, 0, 0), debris = c(0,
1, 0, 0, 0, 1, 0), diveLocation = structure(c(1L, 1L, 1L, 2L,
2L, 2L, 2L), .Label = c("Compliance", "Lease"), class = "factor"),
nonComp = c(NA, NA, NA, NA, NA, NA, NA), nonCompLease = c(NA,
NA, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-7L))
Я хочу заполнить последние две переменные (nonComp и nonCompLease) в зависимости от 'diveLocation' (если diveLocation = 'Compliance', затем эти строки и аналогично, если diveLocation = 'Lease', затем эти строки) и наблюдения других переменных. Я попробовал следующий код:
#first noncompliance where diveLocation=='Compliance'
df$nonComp <- if(df$diveLocation=='Compliance' & df$beg.new==1&
df$beg.new==2& df$beg.new==3& df$GasBubbles==1& df$GasBubbles==2& df$PF==1&
df$PF==2& df$PF==3){
print('yes')
}else{
print('no')
}
и
#2nd noncompliance where diveLocation=='Lease'
df$nonCompLease <- ifelse(df$diveLocation=='Lease'& df$beg.new==3 &
df$GasBubbles==2, df$PF==3, 'yes')
к сожалению, я получаю:
nonComp = c («нет», «нет», «нет», «нет», «нет», «нет», «нет»)
nonCompLease = c («да», «да», «да», «да», «да», «да», «FALSE»))
тогда как должно быть:
nonComp = c («да», «нет», «нет», NA, NA, NA, NA)
nonCompLease = c (NA, NA, NA, «нет», «нет», «да», «да»))
Любая помощь с кодированием для получения желаемого результата будет высоко ценится