Ответ 1
subset(data,!duplicated(data$ID))
Должен сделать трюк
У меня есть большой кадр данных с такими столбцами, как:
ID, time, OS, IP
Каждая строка этого кадра данных соответствует одной записи. Внутри этого кадра данных для некоторых идентификаторов существует несколько записей (строк). Я хотел бы избавиться от этих нескольких строк (очевидно, что другие атрибуты будут отличаться для одного ID). Или поставьте другое: мне нужно только одну запись (строку) для каждого идентификатора.
Когда я использую unique
в столбце ID, я получаю только уровни (или каждый уникальный идентификатор), но я хочу сохранить и другие атрибуты.
Я попытался использовать apply(x,2,unique(data$ID))
, но это тоже не работает.
subset(data,!duplicated(data$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