首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用睡眠时间和唤醒时间计算睡眠时间

如何利用睡眠时间和唤醒时间计算睡眠时间
EN

Stack Overflow用户
提问于 2020-01-05 17:57:03
回答 2查看 355关注 0票数 0

我有一个有睡眠时间和唤醒时间的数据集,并且正在寻找一种计算睡眠时间的方法。我试着去做值上的差异,但是它没有起作用,因为睡眠时间有时被编码为"200“、"2330”或"2445“。

例如

代码语言:javascript
复制
   sleeptime    wakeuptime
1   200       800
2   2330      730
3   2400      700
4   2200      1100
5   100       1000
6   2445      900

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-05 19:50:48

这是另一种需要考虑的方法。

您可以编写一个函数,将数字时间转换/格式化为字符串,并计算分钟数。

然后,由于时间过了午夜,您可以使用ifelse语句来确定时差(以分钟为单位)。

代码语言:javascript
复制
mins_since_MN <- function(x) {
  str_time <- sprintf("%04.0f", x)
  (as.numeric(substring(str_time, 1, 2)) * 60) + as.numeric(substring(str_time, 3, 4)) 
}

df2 <- as.data.frame(sapply(df, mins_since_MN))

with(df2, ifelse(sleeptime > wakeuptime, wakeuptime - sleeptime + (60 * 24), wakeuptime - sleeptime))
[1] 360 480 420 780 540 495

数据

代码语言:javascript
复制
df = data.frame(
  sleeptime = c(200, 2330, 2400, 2200, 100, 2445),
  wakeuptime = c(800, 730, 700, 1100, 1000, 900)
)
票数 1
EN

Stack Overflow用户

发布于 2020-01-05 18:43:00

以下是一种方法:

代码语言:javascript
复制
library(lubridate)

# sample df
df = data.frame(sleeptime = c(200, 2330, 2400, 2200, 100, 2445),
                wakeuptime = c(800, 730, 700, 1100, 1000, 900))

# convert columns to seconds
df = do.call(data.frame, lapply(df, lubridate::seconds))

# get time diff
df$diff <- apply(df, 1, function(x) x[2] - x[1])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59602673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档