melt_check <- function (data, id.vars, measure.vars)
{
varnames <- names(data)
if (!missing(id.vars) && is.numeric(id.vars))
id.vars <- varnames[id.vars]
if (!missing(measure.vars) && is.numeric(measure.vars))
measure.vars <- varnames[measure.vars]
if (!missing(id.vars)) {
unknown <- setdiff(id.vars, varnames)
if (length(unknown) > 0) {
stop("id variables not found in data: ",
paste(unknown,
collapse = ", "), call. = FALSE)
}
}
if (!missing(measure.vars)) {
unknown <- setdiff(measure.vars, varnames)
if (length(unknown) > 0) {
stop("measure variables not found in data:
", paste(unknown,
collapse = ", "), call. = FALSE)
}
}
if (missing(id.vars) && missing(measure.vars)) {
categorical <- sapply(data, function(x) class(x)[1])
%in%
c("factor", "ordered", "character")
id.vars <- varnames[categorical]
measure.vars <- varnames[!categorical]
message("Using ", paste(id.vars, collapse = ", "), " as
id variables")
}
if (missing(id.vars))
id.vars <- varnames[!(varnames %in%
c(measure.vars))]
if (missing(measure.vars))
measure.vars <- varnames[!(varnames %in%
c(id.vars))]
list(id = id.vars, measure = measure.vars)
}
Sent: Wednesday, June 04, 2014 5:09 PM
Subject: Re: [R-br] várias linhas em um única
coluna
Obrigado.
Mas
está faltando a função melt_check
abs
Lucas F. de Souza
Eng. Agrícola - CONAB
M.Sc.
Produção Vegetal - UENF
Doutor em Agrometeorologia - ESALQ/USP
tel: (19)
98160-7068
De:
"Robert Iquiapaza" <rbali@ufmg.br>
Para:
r-br@listas.c3sl.ufpr.br
Enviadas: Quarta-feira, 4 de Junho de
2014 17:00:03
Assunto: Re: [R-br] várias linhas em um única
coluna
A função melt para data frames:
x=data.frame(rbind(runif(5), rbind(runif(5))))
t(x)
meltdf <- function (data, id.vars, measure.vars, variable_name =
"variable",
na.rm =
!preserve.na, preserve.na = TRUE)
{
if (!missing(preserve.na))
message("Use of preserve.na is now deprecated, please
use na.rm instead")
var <- melt_check(data, id.vars, measure.vars)
if (length(var$measure) == 0) {
return(data[, var$id, drop = FALSE])
}
ids <- data[, var$id, drop = FALSE]
df <- do.call("rbind", lapply(var$measure, function(x) {
data.frame(ids, x, data[, x])
}))
names(df) <- c(names(ids), variable_name, "value")
df[[variable_name]] <- factor(df[[variable_name]],
unique(df[[variable_name]]))
if (na.rm) {
df <- df[!is.na(df$value), , drop = FALSE]
}
rownames(df) <- NULL
df
}
meltdf(x)
Sds
Sent: Wednesday, June 04, 2014 3:56 PM
Subject: Re: [R-br] várias linhas em um única
coluna
Obrigado.
Mas
como não tenho o pacote instalado, tenho um problema.
Sou func. público e o
proxy não deixa eu baixar o pacote.
Estou procurando uma solução para isso,
através do R, mas não estou conseguindo.
Conhece algo a respeito de
liberação do proxy no R?
Obrigado
Lucas
Lucas F. de Souza
Eng. Agrícola - CONAB
M.Sc. Produção
Vegetal - UENF
Doutor em Agrometeorologia - ESALQ/USP
tel: (19)
98160-7068
De:
"Rodrigo Muniz" <uenf.rodrigo@gmail.com>
Para:
r-br@listas.c3sl.ufpr.br
Enviadas: Quarta-feira, 4 de Junho de
2014 15:49:27
Assunto: Re: [R-br] várias linhas em um única
coluna
Exatamente Lucas a função melt é do pacote Reshape.
Att..
_______________________________________________
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.