我正在处理来自电子书手表的加速器数据,并且我正在尝试根据算法对人睡眠的时间进行子集化。 我已经确定了一个人睡觉的时间段,其起点和终点位于单独的数据帧中,然后位于我的原始数据中。我现在正在尝试过滤掉一个人入睡和醒来的时间点之间的数据。
我设法为第一列(即第一天晚上)写了一个过滤器,但我不太知道如何将其扩展到其他日子。
Data[Data$timestamp %in% Sleep$in_bed_time:Sleep$out_bed_time,] -> Data_sleep
时间戳如下所示:2020-01-23 23:22:07
我尝试使用for
,并使用ncol扩展功能,直到数据帧Sleep的最后一行,其中存储了入睡时间和就寝时间。
谢谢!
编辑:我已经找到解决方法,但我仍然想知道如何扩展上面指定的过滤器,该过滤器仅将Sleep $ in_bed_time中列的第一行考虑到其他行
答案 0 :(得分:0)
您可以尝试使用与您的方法相近的c()
来组合输入和输出值。
Data[Data$timestamp %in% c(Sleep$in_bed_time,Sleep$out_bed_time),] -> Data_sleep
或者您可以在两列中都进行检查,并使用|
OR逻辑运算符。
Data[Data$timestamp %in% Sleep$in_bed_time | Data$timestamp %in% Sleep$out_bed_time,] -> Data_sleep
答案 1 :(得分:0)
我找到了一条捷径,我将发布给遇到相同问题的每个人:
如果有一列中指定了非穿戴/穿戴时段或睡眠/非睡眠时段,则可以使用actigraph.sleepr::combine_epochs_periods
标记这些时段。然后,将在附加列中将第一个睡眠时间标记为“ 1”,依此类推。所有其他非睡眠列都将包含NA,您可以通过na.omit