使用tidyverse根据时间点和条件对数据进行排序

时间:2020-10-08 14:06:23

标签: r tidyverse

我已经放弃了我的代码,并且会听到是否有人对如何获得我所寻求的结果提出建议。 我有一个包含三个变量的数据框:date_time,ID和x。 “ x”列是每5分钟出现一次的变量x的记录。 ID指示正在记录的内容。请参见下面的数据框。

从这个数据框中,我想计算一个新的数据框,该数据框由以下几列组成(每次测量都应有一行):

  1. “ ID”。
  2. “测量”。该列应说明给定ID的数字量度。 “测量”定义为白天和黑夜(24小时)。测量从23:00:00开始,然后一直运行到第二天23:00:00。但是,记录是在随机时间开始的,并且第一次测量的持续时间不是24小时。此外,度量分为“白天”(7:00:00-22:59:59)和“夜间”(23:00:00-6:59:59)。在创建其他列时,我们需要“一天”。
  3. “日期”。该列应指示测量中记录的执行日期。但是,对于23:00-23:59的第一个小时,日期应为第二天。我尝试以给定的度量格式以yyyy.mm.dd hh:mm:ss来使其成为最后一次录制失败。
  4. “ x_4_10_day_time”:此列应指出每天x的总时间(以分钟为单位)在4-10(包括两者)之间。
  5. “ Day_time_total”:此列应指示一天中测量的x的总时间。 x中缺少应减去的值。 x的缺失值留为空白。对于每次丢失的测量,应从总时间中减去5分钟。此外,一些测量是在7:00以后开始的。
  6. “ x_4_10_day_pct”。此列应说明一天中总时间x在4到10之间(包括两者)的百分比。

数据集中缺少值。例如。 x小于4的时间段(始于02:00:00到02:25:00且之间缺少三个值)应被视为小于15分钟的时间段。

structure(list(date_time = c("2020.03.02 22:00:17", "2020.03.02 22:05:17", 
                             "2020.03.02 22:10:17", "2020.03.02 22:15:17", "2020.03.02 22:20:17", 
                             "2020.03.02 22:25:17", "2020.03.02 22:30:17", "2020.03.02 22:35:17", 
                             "2020.03.02 22:40:17", "2020.03.02 22:45:17", "2020.03.02 22:50:17", 
                             "2020.03.02 22:55:17", "2020.03.02 23:00:17", "2020.03.02 23:05:17", 
                             "2020.03.02 23:10:17", "2020.03.02 23:15:17", "2020.03.02 23:20:17", 
                             "2020.03.02 23:25:17", "2020.03.02 23:30:17", "2020.03.02 23:35:17", 
                             "2020.03.02 23:40:17", "2020.03.02 23:45:17", "2020.03.02 23:50:17", 
                             "2020.03.02 23:55:17", "2020.03.03 00:00:17", "2020.03.03 00:05:17", 
                             "2020.03.03 00:10:17", "2020.03.03 00:15:17", "2020.03.03 00:20:17", 
                             "2020.03.03 00:25:17", "2020.03.03 00:30:17", "2020.03.03 00:35:17", 
                             "2020.03.03 00:40:17", "2020.03.03 00:45:17", "2020.03.03 00:50:17", 
                             "2020.03.03 00:55:17", "2020.03.03 01:00:17", "2020.03.03 01:05:17", 
                             "2020.03.03 01:10:17", "2020.03.03 01:15:17", "2020.03.03 01:20:17", 
                             "2020.03.03 01:25:17", "2020.03.03 01:30:17", "2020.03.03 01:35:17", 
                             "2020.03.03 01:40:17", "2020.04.03 08:24:32", "2020.04.03 08:29:32", 
                             "2020.04.03 08:34:32", "2020.04.03 08:39:32", "2020.04.03 08:44:32", 
                             "2020.04.03 08:49:32", "2020.04.03 08:54:32", "2020.04.03 08:59:32", 
                             "2020.04.03 09:04:32", "2020.04.03 09:09:32", "2020.04.03 09:14:32", 
                             "2020.04.03 09:19:32", "2020.04.03 09:24:32", "2020.04.03 09:29:32", 
                             "2020.04.03 09:34:32", "2020.04.03 09:39:32", "2020.04.03 09:44:32", 
                             "2020.04.03 09:49:32", "2020.04.03 09:54:32", "2020.04.03 09:59:32", 
                             "2020.04.03 10:04:32"), case = c(12L, 12L, 12L, 12L, 12L, 12L, 
                                                              12L, 12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
                                                              13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
                                                              13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
                                                              13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
                                                              13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L), x = c("7.55", "4.55", 
                                                                                                             "4.55", "4.55", "4.55", "12", "12", "12", "12", "10", "10", "4.3", 
                                                                                                             "", "", "4.3", "4.3", "4.3", "", "4.3", "12", "12", "12", "2", 
                                                                                                             "12", "12", "12", "7.55", "4.55", "4.55", "4.55", "4.55", "6", 
                                                                                                             "6", "7", "7", "", "8", "3", "3", "2", "2", "", "3", "6", "7", 
                                                                                                             "12", "12", "2", "12", "10", "10", "4.3", "4.3", "4.3", "4.3", 
                                                                                                             "4.3", "4.3", "4.3", "4.3", "12", "12", "12", "12", "12", "12", 
                                                                                                             "12")), row.names = c(NA, 66L), class = "data.frame")

0 个答案:

没有答案