我有一个有睡眠时间和唤醒时间的数据集,并且正在寻找一种计算睡眠时间的方法。我试着去做值上的差异,但是它没有起作用,因为睡眠时间有时被编码为"200“、"2330”或"2445“。
例如
sleeptime wakeuptime
1 200 800
2 2330 730
3 2400 700
4 2200 1100
5 100 1000
6 2445 900提前谢谢你的帮助。
发布于 2020-01-05 19:50:48
这是另一种需要考虑的方法。
您可以编写一个函数,将数字时间转换/格式化为字符串,并计算分钟数。
然后,由于时间过了午夜,您可以使用ifelse语句来确定时差(以分钟为单位)。
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数据
df = data.frame(
sleeptime = c(200, 2330, 2400, 2200, 100, 2445),
wakeuptime = c(800, 730, 700, 1100, 1000, 900)
)发布于 2020-01-05 18:43:00
以下是一种方法:
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])https://stackoverflow.com/questions/59602673
复制相似问题