簡體   English   中英

時間變量的描述性統計

[英]Descriptive statistics of time variables

我想計算人們上床睡覺的時間的簡單描述性統計數據(平均值等)。 我遇到兩個問題。 原始數據來自一個Excel文件,在該文件中,人們上床睡覺的時間以24小時格式輸入。 我的問題是,到目前為止,r無法識別第二天凌晨1:00人們是否上床睡覺。 這意味着一個在晚上10點上床睡覺的人與凌晨1:00的人相隔3個小時(而不是21個小時)。

在我的數據幀中,變量in_bedPOSIXct格式,因此我想應用一個if函數,該函數告訴時間是否在12:00之前,而不是我要加24小時。

我的職能是:

Patr$in_bed <- if(Patr$in_bed <= ) {
  Patr$in_bed + 24*60*60
}

我的數據框看起來像這樣

                        in_bed 
1          1899-12-30 22:13:00
2          1899-12-30 23:44:00
3          1899-12-30 00:08:00

如果我運行函數,我的變量將被刪除,並顯示以下錯誤消息:

Warning message:
In if (Patr$in_bed < "1899-12-30 12:00") { :
  the condition has length > 1 and only the first element will be used

我做錯了什么,或者有人有更好的主意嗎? 我可以在POSIXct格式的變量上運行諸如均值之類的命令嗎?

比較Patr $ in_bed(向量)和“ 1899-12-30 12:00”(單個值)時,將得到一個邏輯向量。 但是IF語句需要一個邏輯,因此它會生成警告並僅考慮向量的第一個元素。

你可以試試 :

Patr$in_bed <- Patr$in_bed + 24*60*60 * (Patr$in_bed < as.POSIXct("1899-12-30 12:00"))

說明:括號中的比較將返回邏輯向量,該邏輯向量將轉換為整數(對於FALSE為0,對於TRUE為1)。 然后,該語句為真的日期將為+ 24 * 60 * 60,其他日期將為+0。

但是由於POSIXct格式包含日期,所以我看不到添加24小時的目的。 例如,

as.POSIXct("1899-12-31 01:00:00") - as.POSIXct("1899-12-30 22:00:00")

返回3小時的時差,而不是21。

要回答最后一個問題,是的,您可以使用以下命令簡單地計算POSIXct向量的均值:

mean(Patr$in_bed)

希望能有所幫助,傑里米

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM