У меня есть фрейм данных, в котором значения выше определенного уровня в одном векторе должны быть изменены в следующем векторе.
Я пробовал функцию if, которая возвращает «NA».
if (mydata$duration >15) {
mydata$code==3
}
Вот некоторый код того, как должна выглядеть конечная функция, помеченная как «перекодировать».
duration<-c(1,14,5,17,9,10,14,16,2,8,3,18)
code<-c(1,2,1,2,1,2,1,2,1,2,1,2)
mydata<-data.frame(code,duration)
recode<-c(1,2,1,3,1,2,1,3,1,2,1,3)
mydata<-data.frame(recode,duration)
Привет @bouncy Я не думаю, что ifelse работает для уже существующих векторов, и код 1,2 предопределен для этих чисел.
mydata$code <- with(mydata, replace(code, duration > 15, 3))
Вы пробовали код, который я отправил? ifelse
наверняка работает для уже существующих векторов
Спасибо @bouncyball, извините, ваш код сработал отлично
Спасибо @Uwe, ваш код тоже отлично сработал
Либо функция ifelse, либо функция with (replace) работали хорошо.
mydata$code<-ifelse(mydata$duration>15,3,mydata$code)
mydata$code<-with(mydata,replace(code,duration>15,3))
вы смотрели на функцию
ifelse
?ifelse(duration > 15, 3, code)