Eu li um CSV
arquivo em um R data.frame. Algumas das linhas têm o mesmo elemento em uma das colunas. Gostaria de remover linhas duplicadas nessa coluna. Por exemplo:
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
Gostaria apenas de uma dessas linhas, pois as outras têm os mesmos dados na primeira coluna.
r
duplicates
r-faq
user1897691
fonte
fonte
google
oulocalhost
ouhughsie
?Respostas:
basta isolar seu quadro de dados nas colunas necessárias e, em seguida, use a função exclusiva: D
fonte
[,1:3]
parte desse código? Eu sou novo no R e é por isso que estou perguntando o que só posso assumir como uma pergunta óbvia.Para as pessoas que vieram aqui procurar uma resposta geral para remoção de linha duplicada, use
!duplicated()
:Resposta de: Removendo linhas duplicadas do quadro de dados R
fonte
df[!duplicated(df[, 1:2])]
A função
distinct()
nodplyr
pacote executa a remoção duplicada arbitrária, de colunas / variáveis específicas (como nesta pergunta) ou considerando todas as colunas / variáveis.dplyr
faz parte dotidyverse
.Dados e pacote
Remova as linhas duplicadas em uma coluna específica (por exemplo, coluna
a
)Observe que
.keep_all = TRUE
mantém todas as colunas; caso contrário, apenas a colunaa
seria mantida.Remova as linhas que são duplicatas completas de outras linhas:
fonte
.keep_all
é para se manter todas as colunas, para não ser misturado comkeep
nopandas
.O
data.table
pacote também temunique
eduplicated
métodos de seu próprio com alguns recursos adicionais.Tanto o método
unique.data.table
quanto oduplicated.data.table
método possuem umby
argumento adicional que permite passar umcharacter
ouinteger
vetor de nomes de colunas ou seus locais, respectivamenteOutra característica importante desses métodos é um enorme ganho de desempenho para conjuntos de dados maiores
fonte
Você também pode usar
dplyr
adistinct()
função! Tende a ser mais eficiente que as opções alternativas, especialmente se você tiver muitas observações.fonte
a resposta geral pode ser por exemplo:
resultado:
fonte
-which
, isso levará a erros se não houver duplicatas, o usodf[!(duplicated(df)), ]
pode ser mais seguro.Com
sqldf
:Solução:
Resultado:
fonte
Ou você pode aninhar os dados nas colunas 4 e 5 em uma única linha com
tidyr
:As duplicatas da coluna 2 e 3 agora são removidas para análise estatística, mas você manteve os dados da coluna 4 e 5 em uma tabela e pode voltar ao quadro de dados original a qualquer momento
unnest()
.fonte
Remover linhas duplicadas de um quadro de dados
Neste conjunto de dados, não há uma única linha duplicada; portanto, ele retornou o mesmo número de linhas que em meus dados.
Remova linhas duplicadas com base em uma variável
A função .keep_all é usada para reter todas as outras variáveis no quadro de dados de saída.
Remova linhas duplicadas com base em várias variáveis
A função .keep_all é usada para reter todas as outras variáveis no quadro de dados de saída.
(de: http://www.datasciencemadesimple.com/remove-duplicate-rows-r-using-dplyr-distinct-function/ )
fonte
Esse problema também pode ser resolvido selecionando a primeira linha de cada grupo em que o grupo são as colunas com base nas quais queremos selecionar valores únicos (no exemplo compartilhado, é apenas a 1ª coluna).
Usando a base R:
No
dplyr
Ou usando
data.table
Se precisarmos descobrir linhas exclusivas com base em várias colunas, adicione esses nomes de coluna na parte de agrupamento para cada uma das respostas acima.
dados
fonte
Aqui está um rápido muito simples,
dplyr
/tidy
solução:Remova as linhas totalmente iguais:
Remova as linhas iguais apenas em determinadas colunas:
fonte