He leído un CSV
archivo en un R data.frame. Algunas de las filas tienen el mismo elemento en una de las columnas. Me gustaría eliminar filas que son duplicados en esa columna. Por ejemplo:
platform_external_dbus 202 16 google 1
platform_external_dbus 202 16 space-ghost.verbum 1
platform_external_dbus 202 16 localhost 1
platform_external_dbus 202 16 users.sourceforge 8
platform_external_dbus 202 16 hughsie 1
Solo me gustaría una de estas filas ya que las otras tienen los mismos datos en la primera columna.
r
duplicates
r-faq
usuario1897691
fuente
fuente
google
olocalhost
ohughsie
?Respuestas:
simplemente aísle su marco de datos a las columnas que necesita, luego use la función única: D
fuente
[,1:3]
parte de ese código? Soy nuevo en R, por lo que pregunto lo que solo puedo asumir que es una pregunta obvia.Para las personas que han venido aquí a buscar una respuesta general para la eliminación de filas duplicadas, use
!duplicated()
:Respuesta de: Eliminando filas duplicadas del marco de datos R
fuente
df[!duplicated(df[, 1:2])]
La función
distinct()
en eldplyr
paquete realiza una eliminación duplicada arbitraria, ya sea de columnas / variables específicas (como en esta pregunta) o considerando todas las columnas / variables.dplyr
es parte de latidyverse
.Datos y paquete
Eliminar filas duplicadas en una columna específica (por ejemplo, columna
a
)Tenga en cuenta que
.keep_all = TRUE
conserva todas las columnas, de lo contrario soloa
se conservaría la columna .Eliminar filas que son duplicados completos de otras filas:
fuente
.keep_all
es para ya sea para mantener todas las columnas, a no ser mezclado conkeep
enpandas
.El
data.table
paquete también tieneunique
yduplicated
métodos propios con algunas características adicionales.Tanto el
unique.data.table
y losduplicated.data.table
métodos tienen un adicional deby
argumento que le permite pasar unacharacter
ointeger
vector de nombres de columna o de sus lugares, respectivamenteOtra característica importante de estos métodos es una gran ganancia de rendimiento para conjuntos de datos más grandes.
fuente
¡También puedes usar
dplyr
ladistinct()
función! Tiende a ser más eficiente que las opciones alternativas, especialmente si tiene muchas observaciones.fuente
La respuesta general puede ser, por ejemplo:
salida:
fuente
-which
, esto conducirá a un error si no hay duplicados, el usodf[!(duplicated(df)), ]
puede ser más seguro.Con
sqldf
:Solución:
Salida:
fuente
O podría anidar los datos en los cols 4 y 5 en una sola fila con
tidyr
:Los duplicados de col 2 y 3 ahora se eliminan para el análisis estadístico, pero ha mantenido los datos de col 4 y 5 en un tibble y puede volver al marco de datos original en cualquier momento
unnest()
.fuente
Eliminar filas duplicadas de un marco de datos
En este conjunto de datos, no hay una sola fila duplicada, por lo que devolvió el mismo número de filas que en mydata.
Eliminar filas duplicadas basadas en una variable
La función .keep_all se usa para retener todas las demás variables en el marco de datos de salida.
Eliminar filas duplicadas basadas en múltiples variables
La función .keep_all se usa para retener todas las demás variables en el marco de datos de salida.
(de: http://www.datasciencemadesimple.com/remove-duplicate-rows-r-using-dplyr-distinct-function/ )
fuente
Este problema también se puede resolver seleccionando la primera fila de cada grupo donde el grupo son las columnas en función de las cuales queremos seleccionar valores únicos (en el ejemplo compartido, es solo la primera columna).
Usando la base R:
En
dplyr
O usando
data.table
Si necesitamos encontrar filas únicas basadas en múltiples columnas, simplemente agregue esos nombres de columna en la parte de agrupación para cada una de las respuestas anteriores.
datos
fuente
Aquí hay una muy simple, rápida
dplyr
/tidy
solución:Eliminar filas que son completamente iguales:
Eliminar filas que son iguales solo en ciertas columnas:
fuente