[R-br] Retornar NA nos que deram errado

Rodrigo Coster rcoster em gmail.com
Quarta Setembro 17 14:01:52 BRT 2014


Eu tentei criar uma nova função svyquantile (e usando try() dentro dela),
mas agora o erro é outro :/


require(survey)
exemplo <- data.frame(ID = 1:10, var = rnorm(10), var2 = rnorm(10, 5),
grupo = factor(c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'D', 'D')), peso =
rchisq(10, 5))
exemplo[10, 2] <- NA
amostra <- svydesign(ids = ~ ID, data = exemplo, weights = ~ peso)

svyquantile <- function(x, design, quantiles, ...) {
out <- try(survey::svyquantile(x = x, design = design, quantiles =
quantiles, ...))
termos <- attr(terms(x), "term.labels")
out <- if (class(out) == "try-error") { matrix(NA, nrow = length(termos),
ncol = length(quantile)) } else { out }
colnames(out) <- quantiles
rownames(out) <- termos
return(out)
}

svyquantile(~ var + var2, amostra, quantile = .5, na.rm = TRUE) # Funciona
survey::svyquantile(~ var + var2, amostra, quantile = .5, na.rm = TRUE) #
Funciona
identical(svyquantile(~ var + var2, amostra, quantile = .5, na.rm = TRUE),
survey::svyquantile(~ var + var2, amostra, quantile = .5, na.rm = TRUE)) #
E são iguais!

svyby(~ var + var2, ~ grupo, amostra, svyquantile, quantile = .5, na.rm =
TRUE) # Não funciona :(



2014-09-17 12:19 GMT-03:00 Benilton Carvalho <beniltoncarvalho em gmail.com>:

> Use o try ou tryCatch para encapsular o comando que falha com poucas
> observações.
> On Sep 17, 2014 11:20 AM, "Rodrigo Coster" <rcoster em gmail.com> wrote:
>
>> Caros,
>>
>> Estou usando o pacote survey para calcular a mediana de alguns dados
>> vindos de amostras complexas. O problema é que dependendo das variáveis que
>> peço, algumas combinações apresentam menos de 2 observações válidas,
>> impossibilitando o cálculo (apesar deu achar que 1 observação já seria
>> suficiente, já que ela tem peso maior que 1, mas enfim...)
>>
>> Alguém saberia como fazer o comando não parar, mas sim retornar NA nesses
>> valores?
>>
>> Segue um exemplo simplificado (estou usando os dados da amostra do censo
>> demográfico)
>>
>> require(survey)
>> exemplo <- data.frame(ID = 1:10, var = rnorm(10), grupo = factor(c('A',
>> 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'D', 'D')), peso = rchisq(10, 5))
>> exemplo[10, 2] <- NA
>> amostra <- svydesign(ids = ~ ID, data = exemplo, weights = ~ peso)
>> svyby(~ var, ~ grupo, amostra, svyquantile, quantiles = .5)
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140917/0ab7ecdd/attachment.html>


Mais detalhes sobre a lista de discussão R-br