Разница в часах между группами по ID - PullRequest
0 голосов
/ 23 декабря 2018

df набор данных содержит значение Direction и меру Timecode.Я хочу сгенерировать:

Difference_begin_end: это разница между последним временным кодом и первым из каждого sample_ID на Direction

Difference_begin_end_all: это разница между первым и другимпоследняя строка каждого sample_ID на Direction в секунду.

Это набор данных df:

df=structure(list(Sample_ID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Direction = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L), Timecode = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 
6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L), .Label = c("", 
"17:02:10", "17:02:11", "17:02:12", "17:02:13", "17:02:15", "17:02:26", 
"17:02:47", "17:02:48", "17:02:49", "17:02:50", "17:02:59", "17:03:02", 
"17:03:03", "17:03:07", "17:03:10", "17:03:11"), class = "factor")), .Names = c("Sample_ID", 
"Direction", "Timecode"), row.names = c(NA, 50L), class = "data.frame")

РЕДАКТИРОВАТЬ 2: enter image description here

1 Ответ

0 голосов
/ 23 декабря 2018

Если ваша переменная времени относится к классу символов или факторов, вам необходимо преобразовать ее в as.POSIXct(), strptime() или другие аналогичные функции в пакете lubridate.Вот мое решение:

library(dplyr)

df %>% group_by(Sample_ID) %>%
  mutate(Timecode = as.POSIXct(Timecode, format = "%H:%M:%S"),
         yellow = last(Timecode) - first(Timecode)) %>%
  group_by(Sample_ID, Direction) %>%
  mutate(red_purple = last(Timecode) - first(Timecode))

# # A tibble: 99 x 5
# # Groups:   Sample_ID, Direction [4]
#    Sample_ID Direction Timecode            yellow  red_purple
#        <int>     <int> <dttm>              <time>  <time>    
#  1         1         0 2018-12-24 17:02:10 61 secs 5 secs    
#  2         1         0 2018-12-24 17:02:10 61 secs 5 secs    
#  3         1         0 2018-12-24 17:02:10 61 secs 5 secs    
#  4         1         0 2018-12-24 17:02:10 61 secs 5 secs    
#  5         1         0 2018-12-24 17:02:10 61 secs 5 secs  

Переменные yellow и red_purple соответствуют цветам второй фотографии ( EDIT 2 ) в вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...