[R-es] organización datos con data.table

2015-06-03 Por tema MªLuz Morales
Hola de nuevo Carlos,
data.table, aunque eficiente, no es muy trivial para manejar. De los mismos
archivos Set-A que comentábamos hace unos días, en la pregunta mi script R
es muy lentoa la lista...yo hago:

library(data.table)
datSet - fread(Set-A.csv)
datSet2 - datSet[, .(NumVal=length(Value)), by=c(Parameter, RecordID)]

Esto me devuelve para cada RecordID una serie de parámetros (Parameter) con
el número de valores medidos para cada parámetro (NumVal).

Lo que quiero es que me ordene la tabla de forma que para cada RecordID me
muestre los Parameter ordenados según su NumVal (de mayor a menor).

Probablemente es muy facil, pero ando dándole vueltas y no lo consigo...

Gracias
Un saludo

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] organización datos con data.table

2015-06-03 Por tema Carlos Ortega
Hola Mari Luz,

Ya continuando con la solución que te propuse, incluyo al final lo que
pides para ordenar...
El resultado es un data.frame ordenado, por Parámetro y por ValAvg (de
mayor a menor).

Para conocer un resumen de lo que se puede hacer con data.table te interesa
tener esto a mano:
blog.datacamp.com/data-table-cheat-sheet/

De todas formas, lo que devulve data.table es un data.frame (y un
data.table) y por tanto como data.frame puedes usar todas las funciones de
R para ordenar que existen. Incluso utilizar otros paquetes (dplyr, sqldf,
etc) que pueden resultarte más intuitivos, aunque no sean tan rápidos...

#--
library(data.table)

datSet - fread(Set-A.csv)
resOut - datSet[, .(ValMax=max(Value), ValMin=min(Value),
ValAvg=mean(Value)), by=c(RecordID,Parameter)]
resOut$RecordID - as.factor(resOut$RecordID)
setkey(resOut, RecordID)
head(datSet)

datOutcome - fread(Outcomes-A.csv)
datOutcome$RecordID - as.factor(datOutcome$RecordID)
setkey(datOutcome, RecordID)
head(datOutcome)

#resEnd - merge(resOut, datOutcome, by=RecordID, all=TRUE,
allow.cartesian=FALSE)
resEnd - resOut[datOutcome]
head(resEnd)
setkey(resEnd, Parameter)
#Ejemplo para conseguir uno o varios parametros.
myRes - resEnd[c(NISysABP,NIDiasABP,NIMAP)]
head(myRes)




*#Ordenar por ValAvgsetorder(myRes, Parameter, -ValAvg)head(myRes)*
#--


Saludos,
Carlos Ortega
www.qualityexcellence.es

El 3 de junio de 2015, 11:33, MªLuz Morales mlzm...@gmail.com escribió:

 Hola de nuevo Carlos,
 data.table, aunque eficiente, no es muy trivial para manejar. De los
 mismos archivos Set-A que comentábamos hace unos días, en la pregunta mi
 script R es muy lentoa la lista...yo hago:

 library(data.table)
 datSet - fread(Set-A.csv)
 datSet2 - datSet[, .(NumVal=length(Value)), by=c(Parameter, RecordID)]

 Esto me devuelve para cada RecordID una serie de parámetros (Parameter)
 con el número de valores medidos para cada parámetro (NumVal).

 Lo que quiero es que me ordene la tabla de forma que para cada RecordID me
 muestre los Parameter ordenados según su NumVal (de mayor a menor).

 Probablemente es muy facil, pero ando dándole vueltas y no lo consigo...

 Gracias
 Un saludo





-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es