[R-es] Suma de datos de una tabla

David Camilo Gomez Medina dcgomezme @end|ng |rom un@|@edu@co
Jue Ene 19 20:33:40 CET 2023


Muchas gracias Carlos y Manuel por el aporte, me ayudó bastante.

On Thu, 19 Jan 2023 at 04:12, Carlos Ortega <cof using qualityexcellence.es>
wrote:

> Hola,
>
> Sí, he cambiado de forma de hacerlo, así lo tienes directo en un
> data.table...
> Y sale el 2000 que no sé porqué no salía antes.
>
> #---------------------------------
> library(readxl)
> library(data.table)
> library(tidytable)
> library(lubridate)
>
> datos <- read_excel("PPT.xlsx") %>%
>   as.data.table() %>%
>   rename.(fecha = Fecha) %>%
>   mutate.( year = as.factor(year(ymd(fecha)) )) %>%
>   select.(-fecha) %>%
>   as.data.table()
>
> # Crear vectores con nombres de columnas y factores
> cols_to_sum <- datos %>% select.(where(is.numeric)) %>% names()
> resultado <- datos[, lapply(.SD, function(x) sum(x, na.rm = TRUE )),
> .SDcols = cols_to_sum, by = year]
> #--------------------------------
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El mié, 18 ene 2023 a las 23:57, David Camilo Gomez Medina (<
> dcgomezme using unal.edu.co>) escribió:
>
>> Hola Carlos, muchísimas gracias. Me sirvió muchísimo y me hiciste caer en
>> cuenta en que es mejor dejarlo en un dataframe y no en lista. Estoy
>> iniciando en esto porque manejar ese volumen de datos en Excel es muy
>> tedioso.
>>
>> Seguí tu código y lo apliqué, pero mira que no me está dando la suma de
>> manera correcta y también no me aparece el año 2000 y 2020. Adjunto una
>> captura del resultado, de cómo apliqué el código y también el archivo con
>> el que estoy trabajando.
>>
>> library(readxl)
>> library(tidyverse)
>>
>> ppt <- read_excel("PPT.xlsx")
>>
>> ppt <- transform(ppt, Fecha = as.Date(Fecha))
>>
>> ppt$year <- as.integer(format(as.Date(ppt$Fecha), "%Y"))
>>
>> result <- aggregate(. ~ year, data = ppt[, -1], sum, na.rm = T)
>>
>> Saludos,
>>
>> [image: image.png]
>>
>> On Wed, 18 Jan 2023 at 16:10, Carlos Ortega <cof using qualityexcellence.es>
>> wrote:
>>
>>> Hola,
>>>
>>> De esta forma se aproxima bastante a lo que quieres...
>>>
>>> #-----------------------------------------------------
>>> #--- Generar datos de forma sintética.
>>> library(dplyr)
>>>
>>> # número de sitios
>>> N <- 5
>>>
>>> # número de fechas
>>> num_dates <- 365
>>>
>>> # generar fechas para 2019, 2021 y 2022
>>> dates_2019 <- seq(as.Date("2019-01-01"), as.Date("2019-12-31"), by =
>>> "day")
>>> dates_2021 <- seq(as.Date("2021-01-01"), as.Date("2021-12-31"), by =
>>> "day")
>>> dates_2022 <- seq(as.Date("2022-01-01"), as.Date("2022-12-31"), by =
>>> "day")
>>> dates <-
>>> c(rep(dates_2019,num_dates),rep(dates_2021,num_dates),rep(dates_2022,num_dates))
>>>
>>> # generar nombres de columnas
>>> colnames <- c("fecha", paste0("Sitio_", 1:N))
>>>
>>> # generar dataframe vacío
>>> df <- data.frame(matrix(nrow = length(dates), ncol = N + 1))
>>> colnames(df) <- colnames
>>> df$fecha <- dates
>>>
>>> # generar valores aleatorios
>>> for (i in 2:(N + 1)) {
>>>   df[,i] <- rnorm(length(dates), mean = 50, sd = 10)
>>> }
>>>
>>> #----- Cálculo como dataframe.
>>> df$year <- as.integer(format(as.Date(df$fecha), "%Y"))
>>> result <- aggregate(. ~ year, data=df[, -1], sum)
>>>
>>> #----- Como lista...
>>> result_list <- list()
>>> # Aplicar aggregate() a cada columna de sitio
>>> agg_list <- lapply(df[,-1], function(x) aggregate(x ~ year, data =
>>> df[,-1], sum))
>>>
>>> # Aplicar split() a cada elemento de la lista de aggregate()
>>> result_list <- lapply(agg_list, function(x) split(x, x$year))
>>>
>>>
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>> El mié, 18 ene 2023 a las 20:14, David Camilo Gomez Medina (<
>>> dcgomezme using unal.edu.co>) escribió:
>>>
>>>> No sé si olvidé aclarar, pero quiero crear una lista para cada columna
>>>> y así almacenar esos valores.
>>>>
>>>> On Wed, 18 Jan 2023 at 14:13, David Camilo Gomez Medina <
>>>> dcgomezme using unal.edu.co> wrote:
>>>>
>>>>> Hola Carlos.
>>>>>
>>>>> Por ejemplo la segunda columna (16040050), quiero sumar todos los
>>>>> datos de esa columna correspondientes al año 2000 (quiero relacionarlos con
>>>>> la primera columna donde está la fecha) y ese valor almacenarlo en una
>>>>> lista y así sucesivamente con los demás años y con las demás columnas.
>>>>>
>>>>> Tengo pensado una lista así:
>>>>>
>>>>> est_16040050
>>>>>
>>>>> [[2000]]
>>>>> [1] 2.3
>>>>>
>>>>> [[2001]]
>>>>> [1] 1.7
>>>>>
>>>>> [[2002]]
>>>>> [1] 4.8
>>>>>
>>>>> Quedo muy atento a sus sugerencias o guías.
>>>>>
>>>>> Saludos.
>>>>>
>>>>> On Wed, 18 Jan 2023 at 13:52, Carlos Ortega <cof using qualityexcellence.es>
>>>>> wrote:
>>>>>
>>>>>> Hola,
>>>>>>
>>>>>> Por entenderlo mejor, quieres que para las filas, para cada año:
>>>>>>
>>>>>>    1. se sumen las columnas y por tanto tengas tantas sumas como
>>>>>>    columnas.
>>>>>>    2. o sumar todas las columnas y obtener una única suma.
>>>>>>
>>>>>> Gracias,
>>>>>> Carlos Ortega
>>>>>> www.qualityexcellence.es
>>>>>>
>>>>>> El mié, 18 ene 2023 a las 19:29, David Camilo Gomez Medina (<
>>>>>> dcgomezme using unal.edu.co>) escribió:
>>>>>>
>>>>>>> Hola, espero que se encuentren muy bien.
>>>>>>>
>>>>>>> Tengo una tabla de datos de precipitación y quiero sumar por
>>>>>>> columnas y así obtener la precipitación anual. Es decir, quiero sumar solo
>>>>>>> los datos del año 2000 y guardarlos en una lista y así sucesivamente con
>>>>>>> los demás años, pero no encuentro todavía una función o una manera
>>>>>>> eficiente de hacerlo.
>>>>>>>
>>>>>>> Agradecería mucho si alguien me puede guiar.
>>>>>>>
>>>>>>> Saludos
>>>>>>>
>>>>>>> [image: image.png]
>>>>>>>
>>>>>>> *Aviso legal:* El contenido de este mensaje y los archivos adjuntos
>>>>>>> son confidenciales y de uso exclusivo de la Universidad Nacional de
>>>>>>> Colombia. Se encuentran dirigidos sólo para el uso del destinatario al cual
>>>>>>> van enviados. La reproducción, lectura y/o copia se encuentran prohibidas a
>>>>>>> cualquier persona diferente a este y puede ser ilegal. Si usted lo ha
>>>>>>> recibido por error, infórmenos y elimínelo de su correo. Los Datos
>>>>>>> Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra
>>>>>>> Política de Datos Personales que podrá consultar en la página web
>>>>>>> www.unal.edu.co. Las opiniones, informaciones, conclusiones y
>>>>>>> cualquier otro tipo de dato contenido en este correo electrónico, no
>>>>>>> relacionados con la actividad de la Universidad Nacional de Colombia, se
>>>>>>> entenderá como personales y de ninguna manera son avaladas por la
>>>>>>> Universidad.
>>>>>>> _______________________________________________
>>>>>>> R-help-es mailing list
>>>>>>> R-help-es using r-project.org
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Saludos,
>>>>>> Carlos Ortega
>>>>>> www.qualityexcellence.es
>>>>>>
>>>>>
>>>> *Aviso legal:* El contenido de este mensaje y los archivos adjuntos
>>>> son confidenciales y de uso exclusivo de la Universidad Nacional de
>>>> Colombia. Se encuentran dirigidos sólo para el uso del destinatario al cual
>>>> van enviados. La reproducción, lectura y/o copia se encuentran prohibidas a
>>>> cualquier persona diferente a este y puede ser ilegal. Si usted lo ha
>>>> recibido por error, infórmenos y elimínelo de su correo. Los Datos
>>>> Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra
>>>> Política de Datos Personales que podrá consultar en la página web
>>>> www.unal.edu.co. Las opiniones, informaciones, conclusiones y
>>>> cualquier otro tipo de dato contenido en este correo electrónico, no
>>>> relacionados con la actividad de la Universidad Nacional de Colombia, se
>>>> entenderá como personales y de ninguna manera son avaladas por la
>>>> Universidad.
>>>>
>>>
>>>
>>> --
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>
>> *Aviso legal:* El contenido de este mensaje y los archivos adjuntos son
>> confidenciales y de uso exclusivo de la Universidad Nacional de Colombia.
>> Se encuentran dirigidos sólo para el uso del destinatario al cual van
>> enviados. La reproducción, lectura y/o copia se encuentran prohibidas a
>> cualquier persona diferente a este y puede ser ilegal. Si usted lo ha
>> recibido por error, infórmenos y elimínelo de su correo. Los Datos
>> Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra
>> Política de Datos Personales que podrá consultar en la página web
>> www.unal.edu.co. Las opiniones, informaciones, conclusiones y cualquier
>> otro tipo de dato contenido en este correo electrónico, no relacionados con
>> la actividad de la Universidad Nacional de Colombia, se entenderá como
>> personales y de ninguna manera son avaladas por la Universidad.
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

-- 
*Aviso legal:* El contenido de este mensaje y los archivos adjuntos son 
confidenciales y de uso exclusivo de la Universidad Nacional de Colombia. 
Se encuentran dirigidos sólo para el uso del destinatario al cual van 
enviados. La reproducción, lectura y/o copia se encuentran prohibidas a 
cualquier persona diferente a este y puede ser ilegal. Si usted lo ha 
recibido por error, infórmenos y elimínelo de su correo. Los Datos 
Personales serán tratados conforme a la Ley 1581 de 2012 y a nuestra 
Política de Datos Personales que podrá consultar en la página web 
www.unal.edu.co <http://www.unal.edu.co/>.* *Las opiniones, informaciones, 
conclusiones y cualquier otro tipo de dato contenido en este correo 
electrónico, no relacionados con la actividad de la Universidad Nacional de 
Colombia, se entenderá como personales y de ninguna manera son avaladas por 
la Universidad.

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230119/5d1ab833/attachment-0001.html>

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 18015 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230119/5d1ab833/attachment-0002.png>

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 31349 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20230119/5d1ab833/attachment-0003.png>


Más información sobre la lista de distribución R-help-es