Я пытаюсь очистить данные опроса, где иногда информация о минутах вводится в поле часов. В правилах очистки указано переместить значение часов в поле минут, если минуты отсутствуют или равны 0, а часы равны 15, 30, 45 или 60.
Вот функция, которую я написал:
cleanHrMin <- function(x){
h = x[1]
m = x[2]
if ( !is.na(h) && (h==15 || h==30 || h==45 || h==60) && (m==0 || is.na(m)) )
{ return(c(0,h)) }
else
{ return(x) }
}
С тестовыми данными:
df <- as.data.frame(cbind(hrs = c(1,15,0), mins = c(10,NA,15)))
Я запускаю функцию следующим образом:
as.data.frame(apply(df,1,cleanHrMin))
и получить вывод:
V1 V2 V3
1 1 0 0
2 10 15 15
Но я хочу:
V1 V2
1 1 10
2 0 15
3 0 15
Что я делаю не так?