需要使用 24 小时时间计算睡眠就寝时间的 SD,并在午夜后进行一些观察

问题描述 投票:0回答:1

我正在获取睡眠时间并将其转换为分钟,然后计算不同日期的就寝时间之间的标准偏差。问题是有些日子的就寝时间是在午夜之后。我让它可以在 R 上运行,但需要 SAS 代码。


install.packages("chron")
library(chron)


data <- read.table(text="
sleep_time wake_time
23:30:00 05:30:00
00:00:00 05:30:00
00:30:00 05:35:00
", header=T)

mean(times(data$wake_time))
mean(times(data$sleep_time))


wake<- times(data$wake_time)
sleep <- times(data$sleep_time)
times(mean(ifelse(sleep <wake, sleep+1, sleep)))

sd(ifelse(sleep < wake, sleep+1, sleep) * 24*60)
r time sas standard-deviation
1个回答
0
投票

此代码重现了您在 R 中所做的事情,但需要注意以下几点:

  • ifn
    ifelse
    的(数字)SAS 版本。这里的单位是秒,所以我们添加 24 x 60 x 60 而不是 1(天)。还有许多其他方法可以有条件地执行此添加。
  • 同样,标准偏差以秒为单位计算,因此除以 60 得出的结果以分钟为单位。
  • 我在这里使用
    PROC SQL
    ,但还有很多其他方法来获取摘要统计数据。
data times;
   input SLEEP TIME. WAKE TIME.;
   format SLEEP WAKE TOD8.;
   BEDTIME = ifn(sleep < wake, sleep + 24*60*60, sleep);
   * works too: BEDTIME = sleep + (sleep < wake)*24*60*60 ;
   cards;
23:30:00 05:30:00
00:00:00 05:30:00
00:30:00 05:35:00
;
run;

proc sql;
   select mean(bedtime) as M format TOD8., std(bedtime)/60 as S from times;
quit;

*         M     S  ;
*  --------------  ;
*  00:00:00    30  ;
© www.soinside.com 2019 - 2024. All rights reserved.