Если вы хотите сохранить одну строку для каждого идентификатора, но в каждой строке есть разные данные, то вам нужно определиться с логикой для отбрасывания дополнительных строк. Например:
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