2017-10-19 6 views
1

Rを知っている人は私よりも優れています。クラスの場合、私は健康データセットを追加して作業しています。 3つの質問が睡眠パターンを含む2回繰り返されています(あなたは何時になったのですか、それは午前か午後ですか、何のミニチュアですか - この3つの質問は誰が何時起きるか繰り返されます)。これらのコードスニペット使用私はしかし、いくつかの思わぬ障害に実行しています、そして最高の進め方を探しています時間睡眠をコードする方法Rを使用して

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 

24時制の2つの変数を作成しました。私が持っている最初の大きな問題は、これらをまとめてどのようにまとめて3番目の変数を得るかを理解しようとすることです。時間の周期的な性質のために単純に加算したり減算したりすることはできません。私が持っていたより小さな問題は、人が寝る時間の中央値を捨てる周期的な性質から来ています(起床時間はわずかですが、2400後に寝る人は0100で目を覚ます人が多い) 0100で寝る人は、1時間後に寝る人が23時間前ではなく、2400人で寝た人よりも寝たことがあるためです。

+0

'data'(つまり、' dput(data) 'のペースト出力です。' data'はRがgdであっても大きな変数名ではありません。 – hrbrmstr

+0

あなたの質問に[最小再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を含めると、チャンスが増えます – jsb

+0

これははるかに簡単に私を動作させるあなたは日時を持っています。次に、それらを組み合わせて実際の計算を行うことができます。 – Reeza

答えて

0

両方の問題を解決するには、参照の開始時間を作成してから、すべての時間値を開始時間のx時間後に取得する必要があります。

私はデータを見ることができませんので、正確に行う方法を教えてください。しかし、2つの一般的な解決策があります。最初に(そして最も推奨されるのは)as.POSIXltを使ってそれらを保存することです。起床時間は睡眠時間の翌日です。

第2に、すべての起床時間に24を追加できます。 (その後、言った変更を元に戻すには、単純なif(wakeup > 24){wakeup <- wakeup - 24}を印刷

注意しながら:。あなたの3つの質問は、あなたは、被験者が眠りについたかどうか/に目が覚めたため、いくつかの前提条件を確認する必要があります、ご確認明示的にいけないので、

関連する問題