【问题标题】:How to Code for Hours Slept Using R如何使用 R 编写睡眠时间
【发布时间】:2018-03-30 23:47:09
【问题描述】:

向比我更了解 R 的人问好。对于我正在使用添加健康数据集的课程。有 3 个问题重复了两次,涉及睡眠模式(你要去几点,是上午还是下午,什么小步舞曲——然后重复这 3 个问题以了解某人何时醒来)。使用这些代码 sn-ps 我在 24 小时时钟上创建了 2 个变量

data$H4SP2T[data$H4SP2T %in% c(6, 8)] <- NA
data$H4SP2M[data$H4SP2M %in% c(96, 98)] <- NA
data$H4SP2H[data$H4SP2H %in% c(96, 98)] <- NA
data$ampm2 <- car::recode(data$H4SP2T, "1=0; 2=12")
data$ampm2[data$H4SP2H==12 & data$H4SP2T==2]<-0
data$sleep <- data$H4SP2H + data$ampm2 + data$H4SP2M/60


data$H4SP1T[data$H4SP1T %in% c(6, 8)] <- NA
data$H4SP1M[data$H4SP1M %in% c(96, 98)] <- NA
data$H4SP1H[data$H4SP1H %in% c(96, 98)] <- NA
data$ampm <- car::recode(data$H4SP1T, "1=0; 2=12")
data$ampm[data$H4SP1H==12 & data$H4SP1T==2]<-0
data$wakeup <- data$H4SP1H + data$ampm + data$H4SP1M/60

summary(data$sleep)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
1.00   12.00   22.00   17.44   23.00  107.63    1390  

summary(data$wakeup)
  Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  1.000   5.750   6.500   7.023   7.500  23.500    1404 

但是,我遇到了一些障碍,正在寻找最好的方法。我遇到的第一个大问题是试图弄清楚如何将它们混合在一起以获得第三个变量,该变量简单地告诉我某人睡了多少小时,由于时间的循环性质,简单地添加或减去它们是行不通的。我遇到的较小问题还来自时间循环性质,它会影响人们上床睡觉的中位时间(稍微扰乱了起床时间,但没有那么多——有人在 2400 后睡觉比有人在 0100 醒来更常见) ,因为在 0100 睡觉的人比在 2400 睡觉的人晚睡 1 小时,而不是早 23 小时。

【问题讨论】:

  • 我们有点需要data(即dput(data) 的粘贴输出。data 也不是一个很好的变量名,即使 R 擅长解决问题。它会回来咬人你总有一天。
  • 在您的问题中包含minimal reproducible example 会增加您获得答案的机会。
  • 如果您有日期和时间,这会更容易。然后你可以把它们结合起来做实际的计算。

标签: r variables time


【解决方案1】:

要解决这两个问题,您需要创建一个开始时间以供参考,然后将所有时间值导出为开始时间后的 x 小时数。

由于我看不到数据,我无法确切告诉您如何操作,但有 2 个通用解决方案。首先(也是最推荐的)是使用as.POSIXlt 存储它们,唤醒时间是睡眠时间后的第二天。

其次,您可以将所有唤醒时间加 24。 (然后在打印一个简单的if(wakeup &gt; 24){wakeup &lt;- wakeup - 24} 以撤消所述更改。

注意:由于您的3个问题没有明确检查,因此您需要对受试者在第一天或第二天是否入睡/醒来做出一些假设和条件。

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多