Учет времени в R - PullRequest
       7

Учет времени в R

0 голосов
/ 22 октября 2018

У меня есть журнал времени за 2 периода (1 и 2) в кадре данных.Мне нужно учитывать время, накопленное для каждого человека, основываясь на третьем столбце «против».Затем мне нужно создать дополнительный столбец для отслеживания суммы накопленного времени за оба периода.

Period   Time        Subs
  1      10:00      'Peter in'
  1        .    
  1        .     
  1       8:00      'Peter out' #In this period he has accumulated 2 minutes
  2      10:00      'Peter in'
  2        .
  2       2:00      'Peter out' #In this period he has accumulated 8 minutes 

Я знаю, что мне нужно использовать оператор if и ifelse, но я не знаю, с чего начать.Я начал и прекратил изучать R, и теперь я пытаюсь вернуться туда, где остановился.

1 Ответ

0 голосов
/ 22 октября 2018

Конечно, многое зависит от того, как отформатированы ваши данные.если у вас есть что-то вроде

df <- data.frame(Period=c(1,1,1,1,2,2,2), Time=c("10:00",NA,NA,"8:00","10:00",NA,"2:00"))

> df
  Period  Time
1      1 10:00
2      1  <NA>
3      1  <NA>
4      1  8:00
5      2 10:00
6      2  <NA>
7      2  2:00

Если переменная Time отформатирована как символ, вы можете удалить столбец минут следующим образом:

df$Min <- as.numeric(sapply(strsplit(as.character(df$Time), ":"), "[[", 1))

> df
  Period  Time Min
1      1 10:00  10
2      1  <NA>  NA
3      1  <NA>  NA
4      1  8:00   8
5      2 10:00  10
6      2  <NA>  NA
7      2  2:00   2

Это намного проще, если выстолбец Min может быть уже числовым!

Тогда простой способ вернуть общее время, накопленное за каждый период, - это diff из range для каждого периода в пределах tapply()звонок.

tapply(df$Min, df$Period, function(x) diff(range(x, na.rm=T)))
1 2 
2 8 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...