
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@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@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@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@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.