[英]Descriptive statistics of time variables
我想計算人們上床睡覺的時間的簡單描述性統計數據(平均值等)。 我遇到兩個問題。 原始數據來自一個Excel文件,在該文件中,人們上床睡覺的時間以24小時格式輸入。 我的問題是,到目前為止,r無法識別第二天凌晨1:00人們是否上床睡覺。 這意味着一個在晚上10點上床睡覺的人與凌晨1:00的人相隔3個小時(而不是21個小時)。
在我的數據幀中,變量in_bed
是POSIXct
格式,因此我想應用一個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.