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