Discussion:
[R-es] Estimada comunidad, queria pedirles ayuda porque realmente llevo muchas horas tratando de hacer algo que debe ser simple, y por eso mismo ya me esta frustrando ...
eric
2017-12-12 20:32:26 UTC
Permalink
_______________________________________________
R-help-es mailing list
R-help-***@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
Jesús Para Fernández
2017-12-12 22:40:06 UTC
Permalink
Con el paquete data.table, el cual creo que estas usando, deberia valerte.

Has probado a hacer lo siguietne:

filas<-datos[muertos== "SI" ,.N]
datos[,.(.N/filas),by=.(año,causa.muerte)]


De todos modos, si nos pasass un dataset para poder verlo, te ayudaremos mucho mejor.

Un saludo
Jesús
________________________________
De: R-help-es <r-help-es-***@r-project.org> en nombre de eric <***@gmail.com>
Enviado: martes, 12 de diciembre de 2017 21:32
Para: Lista R
Asunto: [R-es] Estimada comunidad, queria pedirles ayuda porque realmente llevo muchas horas tratando de hacer algo que debe ser simple, y por eso mismo ya me esta frustrando ...

Estimada comunidad, queria pedirles ayuda porque realmente llevo muchas horas tratando de hacer algo que debe ser simple, y por eso mismo ya me esta frustrando ... tengo un set de datos con el cual necesito calcular unas tasas de ocurrencia por año. Hay una columna de años (AÑO) y una de causa de muerte (CDM). El caso es tan simple como calcular la tasa de ocurrencia de un tipo especifico de causa de muerte para cada año. En data.table, genericamente es algo asi como:

datos[, largo del set de datos para una causa especifica de muerte / total de muertes, by=AÑO]

pero no consigo que me de el valor correcto. Si pongo un filtro para la causa especifica de muerte en el primer campo del data.table asi:

datos[FILTRO, largo del set de datos para una causa especifica de muerte / total de muertes, by=AÑO]

, este afecta tambien al total de muertes. Me explico con claridad ? Alguna idea ? muchas gracias,

Eric.

[[alternative HTML version deleted]]
eric
2017-12-15 13:43:30 UTC
Permalink
_______________________________________________
R-help-es mailing list
R-help-***@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
Javier Marcuzzi
2017-12-15 14:08:54 UTC
Permalink
Estimado Eric

Depende que tipo de datos y forma que tiene para manejarlos en R, desde un
data.frame, data.table, sqldf, etc. Lo que veo en su escrito podría ser una
estadística muy simple, algo como porcentajes de causa de muerte a lo largo
de los años, pero no sería del todo correcto, de acuerdo al área de la
ciencia de la cual está tratando, si es epidemiología, no importa ese dato,
por ejemplo, una año mueren 20 %, al siguiente 21%, eso está dentro de lo
normal por decirlo de alguna forma, con una diferencia del 1%, pero si un
año muere un individuo, y al año siguiente el 0,5%, eso es menos del 1%
anterior, sin embargo es importantísimo, podría ser epidemia, porque se
tienen en cuenta los casos en relación a los normales, aunque la formula
matemática no es exactamente esa (simplifique terminología). Creo que no
está disponible, quedo obsoleto, pero los códigos viejos en R están por
algún lado y hay un libro gratis, si no recuerdo mal es Epicalc R

Javier Rubén Marcuzzi
Hola Jesus, mucha gracias, voy a probar lo que sugieres a ver que resulta.
En cuanto pueda les comparto un data set.
Saludos,
Eric.
Con el paquete data.table, el cual creo que estas usando, deberia valerte.
filas<-datos[muertos== "SI" ,.N]
datos[,.(.N/filas),by=.(año,causa.muerte)]
De todos modos, si nos pasass un dataset para poder verlo, te ayudaremos mucho mejor.
Un saludo
Jesús
------------------------------
*Enviado:* martes, 12 de diciembre de 2017 21:32
*Para:* Lista R
*Asunto:* [R-es] Estimada comunidad, queria pedirles ayuda porque
realmente llevo muchas horas tratando de hacer algo que debe ser simple, y
por eso mismo ya me esta frustrando ...
Estimada comunidad, queria pedirles ayuda porque realmente llevo muchas
horas tratando de hacer algo que debe ser simple, y por eso mismo ya me
esta frustrando ... tengo un set de datos con el cual necesito calcular
unas tasas de ocurrencia por año. Hay una columna de años (AÑO) y una de
causa de muerte (CDM). El caso es tan simple como calcular la tasa de
ocurrencia de un tipo especifico de causa de muerte para cada año. En
datos[, largo del set de datos para una causa
especifica de muerte / total de muertes, by=AÑO]
pero no consigo que me de el valor correcto. Si pongo un filtro para la
datos[FILTRO, largo del set de datos para una causa
especifica de muerte / total de muertes, by=AÑO]
, este afecta tambien al total de muertes. Me explico con claridad ?
Alguna idea ? muchas gracias,
Eric.
--
Forest Engineer
Master in Environmental and Natural Resource Economics
Ph.D. student in Sciences of Natural Resources at La Frontera University
Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living
Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo.
_______________________________________________
R-help-es mailing list
https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]
patricio fuenmayor
2017-12-16 16:30:07 UTC
Permalink
Hola.
Lo que tienes que hacer es calcular el numero total de muertes por año
primero y luego este resultado adjuntarlo a tu data.table de causas de
muerte.
NO te salen los resultados porque al momento que haces todo en solo grupo
de operaciones y aplicas un FILTRO esto afecta en los totales.

dt <- data.table(readxl::read_xlsx("d:/cdm.xlsx","dat"))
dt
año cdm muertes
1: 2015 A 4
2: 2015 B 3
3: 2015 D 1
4: 2015 F 8
5: 2016 A 9
6: 2016 B 5
7: 2016 C 3
8: 2017 C 4
9: 2017 B 1
10: 2017 G 2
11: 2017 A 7

dt[,.(total=sum(muertes)),by=año][dt[,.(muertes_s=sum(muertes)),by=.(año,cdm)],on=.(año)][,.(año,cdm,pct=muertes_s/total)]

saludos

[[alternative HTML version deleted]]

Loading...