Muchas gracias Carlos y Manuel por el aporte, me ayudó bastante.
On Thu, 19 Jan 2023 at 04:12, Carlos Ortega <cof en 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 en 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 en
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 en 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 en 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 en
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 en 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 en 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>