2010-05-03 3 views
12

У меня есть большая dataframe с колоннами, такими как:Избавиться от строк с повторяющимися атрибутов в R

ID, time, OS, IP 

Каждая строка этого dataframe соответствует одной записи. В пределах этого кадра данных для некоторых IDs существует несколько записей (строк). Я хотел бы избавиться от этих нескольких строк (очевидно, что другие атрибуты будут отличаться для одного ID). Или поставьте разные: мне нужно только одну запись (строку) для каждого идентификатора.

Когда я использую unique в столбце ID, я получаю только уровни (или каждый уникальный идентификатор), но я хочу сохранить и другие атрибуты. Я пытался использовать apply(x,2,unique(data$ID)), но это тоже не работает.

+1

Вы должны определить, что вы хотите сделать с другими атрибутами для наблюдений с тем же ID когда они не согласны. – Aniko

+0

ну, я бы хотел увидеть распределение ОС у пользователей ... Итак, когда у меня есть датафрейм с одной записью для каждого пользователя, Id do: mytable <- table (dataset $ os.name) и после некоторого графика ... – CatholicEvangelist

ответ

26
subset(data,!duplicated(data$ID)) 

Если сделать трюк

+0

спасибо огромное - я был близок к отчаянию ... – CatholicEvangelist

+0

Это будет работать, если у вас нет эвристики в виду того, как выбирать другие данные. Кажется, это очень странный случай использования ... – Shane

+1

Точно, что мне просто нужно, Джеймс, спасибо. –

3

Если вы хотите сохранить одну строку для каждого идентификатора, но есть разные данные по каждой строке, то вам нужно решить, на какой-то логики отбросить дополнительные строки. Например:

df <- data.frame(ID=c(1, 2, 2, 3), time=1:4, OS="Linux") 
df 
    ID time OS 
1 1 1 Linux 
2 2 2 Linux 
3 2 3 Linux 
4 3 4 Linux 

Теперь я буду держать максимальное значение времени и последнее значение ОС:

library(plyr) 
unique(ddply(df, .(ID), function(x) data.frame(ID=x[,"ID"], time=max(x$time), OS=tail(x$OS,1)))) 
    ID time OS 
1 1 1 Linux 
2 2 3 Linux 
4 3 4 Linux 
+0

спасибо за подробный ответ !!! – CatholicEvangelist

Смежные вопросы