NA Ошибка мин Функция в R - PullRequest
       6

NA Ошибка мин Функция в R

0 голосов
/ 09 ноября 2011

Я сталкиваюсь с ошибкой, используя функцию R min ().

wip <- read.csv("WIP-01-11-11.csv") # Get WIP CSV
wip <- transform(wip, End.Date=as.Date(wip$End.Date,format='%d-%b-%y', na.rm=T))
wip <- transform(wip, Start.Date=as.Date(wip$Start.Date,format='%d-%b-%y', na.rm=T))
wip2 <- transform(wip, duration=ifelse(
                       round((wip3$End.Date - wip3$Start.Date)/30, digits = 0)==0, 
                           1,
                          round((wip3$End.Date - wip3$Start.Date)/30, digits = 0))) 
               # At this point, I get NAs
wip3 <- transform(wip2, monthsRec=min( ( 
               (2011*12+11) - as.numeric(format(wip3$Start.Date, '%Y'))*12 +
                              as.numeric(format(wip3$Start.Date, '%m'))), 
               wip3$duration)
                 )

Почему я получаю NA в расчете "продолжительности" для wip2, когда End.Date и Start.Date не имеют NA.

Спасибо

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Я воспроизвел вашу проблему с примером @John Colbys, если я использую неправильный корпус для wip3$start.Date:

wip3 = list()
wip3$start.Date = as.Date('2011-01-01')
wip3$duration = 10
min(((2011*12+11) - as.numeric(format(wip3$Start.Date, '%Y'))*12+as.numeric(format(wip3$Start.Date, '%m'))),wip3$duration)

Который производит

[1] NA
Warning messages:
1: NAs introduced by coercion 
2: NAs introduced by coercion 

Я подозревал, что поскольку у вас есть wip3$duration, у вас, вероятно, тоже есть wip3$start.Date - но вы обращались к нему как wip3$Start.Date в своем коде. Это возвращает NULL, что не работает с остальными ...

1 голос
/ 09 ноября 2011
wip3 = list()
wip3$Start.Date = as.Date('2011-01-01')
wip3$duration = 10
> min(((2011*12+11) - as.numeric(format(wip3$Start.Date, '%Y'))*12+as.numeric(format(wip3$Start.Date, '%m'))),wip3$duration)
[1] 10

У меня отлично работает.Есть ли у вас НС в ваших данных?Если это так, вы, вероятно, захотите использовать флаг na.rm=T для min().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...