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

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

ID, time, OS, IP

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

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

12
задан Benjamin 2 February 2014 в 14:08
поделиться

2 ответа

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

Должен помочь

28
ответ дан 2 December 2019 в 04:52
поделиться

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

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
3
ответ дан 2 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: