Displaying 4 results from an estimated 4 matches for "n_borrar".
Did you mean:
borrar
2024 Oct 07
1
Optimizar bucle for
...id = c(1, 1, 1, 2, 2, 2, 1, 3),
dates = as.Date(c("2023-01-01", "2023-05-15", "2023-12-01", "2023-01-01",
"2023-04-01", "2023-12-01", "2023-03-15", "2023-01-01"))
)
# important!
df <- df[order(df$id, df$dates),]
n_borrar <- 1
while (n_borrar > 0) {
df <- ddply(df, .(id), transform, delta = c(1000, diff(dates)))
# find the first register by id in less than dif_days
df <- ddply(df, .(id), transform, borrar = cumsum(delta < dif_days))
df <- ddply(df, .(id), transform, borrar = cumsum(borrar)...
2024 Oct 07
1
Optimizar bucle for
...y(plyr)
>
> n_reg <- 332505
> n_ids <- 63738
>
> dif_days <- 90
>
> df <- data.frame(
> id = sample(n_ids, n_reg, replace = T),
> dates = sample(1000, n_reg, replace = T)
> )
>
> # important!
> df <- df[order(df$id, df$date),]
>
> n_borrar <- 1
>
> while (n_borrar > 0) {
> df <- ddply(df, .(id), transform, delta = c(1000, diff(dates)))
> # find the first register by id in less than dif_days
> df <- ddply(df, .(id), transform, borrar = cumsum(delta < dif_days))
> n_borrar <- sum(df$borrar =...
2024 Oct 07
1
Optimizar bucle for
Hola, ¿qué tal?
Modifica esto:
----
library(plyr)
n_reg <- 332505
n_ids <- 63738
dif_days <- 90
df <- data.frame(
id = sample(n_ids, n_reg, replace = T),
dates = sample(1000, n_reg, replace = T)
)
# important!
df <- df[order(df$id, df$date),]
n_borrar <- 1
while (n_borrar > 0) {
df <- ddply(df, .(id), transform, delta = c(1000, diff(dates)))
# find the first register by id in less than dif_days
df <- ddply(df, .(id), transform, borrar = cumsum(delta < dif_days))
n_borrar <- sum(df$borrar == 1)
print(n_borrar)
df &l...
2024 Oct 07
1
Optimizar bucle for
Hola a todos:
Tengo un bucle que tarda horas y me gustaría optimizarlo. Me explico. Simplificando, tengo una tabla con 332.505 registros de 63.738 individuos. Cada registro es una medida realiza de unos
días a unos meses o años después de la anterior. Lo que quiero es borrar aquellos registros que entre él y el anterior hayan transcurrido menos
de 6 meses, de manera que me quede una tabla con