Подтвердить что ты не робот

Избавьтесь от строк с дублирующимися атрибутами в R

У меня есть большой кадр данных с такими столбцами, как:

ID, time, OS, IP

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

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

4b9b3361

Ответ 1

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

Должен сделать трюк

Ответ 2

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

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