valores repetidas quitar para macro filas encontraron eliminar duplicados duplicadas condicion con como borrar r date duplicate-removal

repetidas - quitar duplicados en excel con formula



Eliminar filas que están duplicadas en una columna según las condiciones de otra columna (4)

Aquí hay un ejemplo de mi conjunto de datos;

Date Time(GMT)Depth Temp Salinity Density Phosphate 24/06/2002 1000 1 33.855 0.01 24/06/2002 1000 45 33.827 0.01 01/07/2002 1000 10 13.26 33.104 24.873 0.06 01/07/2002 1000 30 12.01 33.787 25.646 0.13 08/07/2002 1000 5 13.34 33.609 25.248 0.01 08/07/2002 1000 40 12.01 34.258 26.011 1.33 15/07/2002 1000 30 12.04 34.507 26.199 0.01 22/07/2002 1000 5 13.93 33.792 25.269 0.01 22/07/2002 1000 30 11.9 34.438 26.172 0.08 29/07/2002 1000 5 13.23 34.09 25.642 0.01

Quiero eliminar filas duplicadas para que solo tenga una fila por fecha, quiero hacer esto en función de la profundidad, me gustaría mantener la fila con la mayor profundidad (más profunda). ¿Algunas ideas?


Digamos que tienes datos en df

df = df[order(df[,''Date''],-df[,''Depth'']),] df = df[!duplicated(df$Date),]


Este podría no ser el enfoque más rápido si su marco de datos es grande, pero bastante sencillo. Esto puede cambiar el orden de su marco de datos y es posible que necesite reordenar, por ejemplo, la fecha posterior. En lugar de eliminar, dividimos los datos por fecha, en cada fragmento seleccionamos una fila con la fecha máxima y finalmente unimos el resultado en un marco de datos

data = split(data, data$Date) data = lapply(data, function(x) x[which.max(x$Depth), , drop=FALSE]) data = do.call("rbind", data)


Presentamos una solución de data.table que será la manera más rápida de resolver esto (suponiendo que los data son su conjunto de datos)

library(data.table) unique(setDT(data)[order(Date, -Depth)], by = "Date")

Solo otra forma:

setDT(data)[data[, .I[which.max(Depth)], by=Date]$V1]


# First find the maxvalues maxvals = aggregate(df$Depth~df$Date, FUN=max) #Now use apply to find the matching rows and separate them out out = df[apply(maxvals,1,FUN=function(x) which(paste(df$Date,df$Depth) == paste(x[1],x[2]))),]

Eso funciona para ti?