Как настроить мои данные.кадр на значение в секунду?

#r #datetime #withings

#r #дата и время #уитингс

Вопрос:

Мне нужно провести некоторый анализ значений измерения частоты сердечных сокращений (ЧСС) устройства. Однако это устройство дает очень странную производительность в час в секунду. Существует столбец под названием «длительность», в котором указано, за сколько секунд был измерен определенный ЧСС, чем в той же строке в столбце «частота сердечных сокращений» указано значение ЧСС, а затем есть другой столбец с отметкой даты и времени «дата начала». Однако продолжительность, указанная, например, в строке 2 (допустим, 3), является продолжительностью с даты начала отметки времени строки 1 (это означает, что дата начала в строке 1 будет, например, 06.09.21 07:24:23, а в строке 2 06.09.21 07:24:26), и поэтому эта продолжительность в строке 2 показывает, за сколько секунд было измерено значение «частота сердечных сокращений» в строке 1. Это выглядит так:

 duration heart_rate startdate   lt;dblgt; lt;dblgt; lt;dttmgt;   1 1 74 2021-09-06 07:25:33  2 1 74 2021-09-06 07:25:34  3 2 71 2021-09-06 07:25:36  4 4 71 2021-09-06 07:25:40  5 2 72 2021-09-06 07:25:42  6 6 72 2021-09-06 07:25:48  7 2 74 2021-09-06 07:25:50  8 5 76 2021-09-06 07:25:55  9 4 75 2021-09-06 07:25:59 10 2 75 2021-09-06 07:26:01  

Я вручную настроил 10 строк выше в нужный формат. Что я хочу, чтобы это выглядело так:

 duration heart_rate startdate   lt;dblgt; lt;dblgt; lt;dttmgt;   1 1 74 2021-09-06 07:25:33  2 1 74 2021-09-06 07:25:34  3 1 74 2021-09-06 07:25:35  4 1 71 2021-09-06 07:25:36  5 1 71 2021-09-06 07:25:37  6 1 71 2021-09-06 07:25:38  7 1 71 2021-09-06 07:25:39  8 1 71 2021-09-06 07:25:40  9 1 71 2021-09-06 07:25:41 10 1 72 2021-09-06 07:25:42 11 1 72 2021-09-06 07:25:43 12 1 72 2021-09-06 07:25:44 13 1 72 2021-09-06 07:25:45 14 1 72 2021-09-06 07:25:46 15 1 72 2021-09-06 07:25:47 16 1 72 2021-09-06 07:25:48 17 1 72 2021-09-06 07:25:49 18 1 74 2021-09-06 07:25:50 19 1 74 2021-09-06 07:25:51 20 1 74 2021-09-06 07:25:52 21 1 74 2021-09-06 07:25:53 22 1 74 2021-09-06 07:25:54 23 1 76 2021-09-06 07:25:55 24 1 76 2021-09-06 07:25:56 25 1 76 2021-09-06 07:25:57 26 1 76 2021-09-06 07:25:58 27 1 75 2021-09-06 07:25:59 28 1 75 2021-09-06 07:26:00  

Кроме того, крайне важно получить отметку времени для каждой секунды во всем кадре data., потому что устройство выдает много значений NA, поэтому я хотел бы посмотреть, за какие периоды времени (когда и сколько секунд) данные отсутствуют. Я новичок в R, и это новый вид задачи, с которой мне до сих пор даже близко не приходилось сталкиваться, поэтому сейчас я немного растерян, так как понятия не имею, как правильно с этим справиться. Спасибо всем вам за вашу помощь!

Комментарии:

1. @DavideBrex Привет, да, конечно, вы правы. Дело в том, что я даже не знаю, с чего начать с этого. Как я уже сказал, я действительно новичок в R, и базовая работа с data_frames-это то, что я уже могу делать, но это немного выше моих текущих знаний.. Однако мне очень жаль. Я не хотел производить такого впечатления. Я буду и, конечно же, пытаюсь найти решение и сам.

Ответ №1:

звучит как работа для подвижного соединения.. (используя data.table )

 library(data.table) # sample data DT lt;- fread(" duration heart_rate startdate   1 74 2021-09-06T07:25:33  1 74 2021-09-06T07:25:34  2 71 2021-09-06T07:25:36  4 71 2021-09-06T07:25:40  2 72 2021-09-06T07:25:42  6 72 2021-09-06T07:25:48  2 74 2021-09-06T07:25:50  5 76 2021-09-06T07:25:55  4 75 2021-09-06T07:25:59  2 75 2021-09-06T07:26:01") DT[, startdate := as.POSIXct(startdate, "%Y-%m-%dT%H:%M:%S")]  # create new data.table by second DT2 lt;- data.table( timestamp = seq(min(DT$startdate), max(DT$startdate), by = 1)) # join in data using a rolling join DT2[, heart_rate := DT[DT2, heart_rate, on = .(startdate = timestamp), roll = Inf]] # timestamp heart_rate # 1: 2021-09-06 07:25:33 74 # 2: 2021-09-06 07:25:34 74 # 3: 2021-09-06 07:25:35 74 # 4: 2021-09-06 07:25:36 71 # 5: 2021-09-06 07:25:37 71 # 6: 2021-09-06 07:25:38 71 # 7: 2021-09-06 07:25:39 71 # 8: 2021-09-06 07:25:40 71 # 9: 2021-09-06 07:25:41 71 # 10: 2021-09-06 07:25:42 72 # 11: 2021-09-06 07:25:43 72 # 12: 2021-09-06 07:25:44 72 # 13: 2021-09-06 07:25:45 72 # 14: 2021-09-06 07:25:46 72 # 15: 2021-09-06 07:25:47 72 # 16: 2021-09-06 07:25:48 72 # 17: 2021-09-06 07:25:49 72 # 18: 2021-09-06 07:25:50 74 # 19: 2021-09-06 07:25:51 74 # 20: 2021-09-06 07:25:52 74 # 21: 2021-09-06 07:25:53 74 # 22: 2021-09-06 07:25:54 74 # 23: 2021-09-06 07:25:55 76 # 24: 2021-09-06 07:25:56 76 # 25: 2021-09-06 07:25:57 76 # 26: 2021-09-06 07:25:58 76 # 27: 2021-09-06 07:25:59 75 # 28: 2021-09-06 07:26:00 75 # 29: 2021-09-06 07:26:01 75 # timestamp heart_rate