У меня есть датафрейм со столбцами для даты, времени, идентификатора, времени и глубины. Я использую ddply, чтобы получить среднее время и глубину для каждой уникальной даты и времени, так как есть повторяющиеся строки даты и времени. Однако в каждом блоке datetime может быть несколько уникальных значений id и повторяющиеся строки для отдельных идентификаторов. Поэтому, что мне нужно сделать для каждого блока даты и времени, так это вычислить среднее значение всех уникальных времен, взятых из блоков id. т.е. мне сначала нужно получить уникальные значения времени из каждого блока идентификатора, а затем я хочу вычислить среднее значение для всех уникальных значений времени, возвращаемых с помощью этого метода для каждого блока даты и времени. Я пытаюсь использовать%>% для этого, но это новый синтаксис для меня, и я изо всех сил. Будем благодарны за любую помощь или альтернативные предложения в оболочке ddply для datetime. Ниже приведен пример.
> dput(df3)
structure(list(datetime = c("23/03/2017 14:13:45", "23/03/2017 14:13:45",
"23/03/2017 14:13:45", "23/03/2017 14:13:45", "23/03/2017 14:13:45",
"23/03/2017 14:13:45", "23/03/2017 14:13:45", "23/03/2017 14:13:45",
"23/03/2017 14:13:45", "23/03/2017 14:13:45", "23/03/2017 14:15:15",
"23/03/2017 14:15:15", "23/03/2017 14:15:15", "23/03/2017 14:15:15",
"23/03/2017 14:15:45", "23/03/2017 14:15:45", "23/03/2017 14:16:15",
"23/03/2017 14:16:15", "23/03/2017 14:16:15", "23/03/2017 14:16:15",
"23/03/2017 14:16:15", "23/03/2017 14:16:15", "23/03/2017 14:16:15"
), id = c(11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 12L,
12L, 12L, 13L, 14L, 14L, 15L, 16L, 16L, 16L, 17L, 18L, 18L),
time = c(10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
3L, 3L, 3L, 1L, 2L, 2L, 1L, 3L, 3L, 3L, 1L, 2L, 2L), dep = c(0.448675132,
0.448675132, 0.448675132, 0.448675132, 0.448675132, 0.448675132,
0.448675132, 0.448675132, 0.448675132, 0.448675132, 0.285520539,
0.285520539, 0.285520539, 0.285520539, 0.316112025, 0.316112025,
0.326309187, 0.356900674, 0.356900674, 0.356900674, 0.38749216,
0.326309187, 0.326309187)), class = "data.frame", row.names = c(NA,
-23L))
Моя попытка не работает:
#convert datetime to POSIXct
df3$datetime = as.POSIXct(strptime(df3$datetime, format="%d/%m/%Y %H:%M:%S"), tz="UTC")
#Now condense the dateframe by unique datetime summarising tim and dep cols
dfCondensed = ddply(df3, .(datetime), summarise,
#get the mean time for each unique datetime, but calculate this using
#all the unique time values found within each unique id
meantime = group_by(id) %>% unique(time) %>% mean(),
#do the same as above but for dep
meandep = group_by(id) %>% unique(dep) %>% mean())
Желаемый вывод
> dfCondensed
datetime tim dep
1 23/03/2017 14:13:45 10.00 0.4486751
2 23/03/2017 14:15:15 2.00 0.2855205
3 23/03/2017 14:15:45 2.00 0.3161120
4 23/03/2017 14:16:15 1.75 0.3492528