0

時間をかけてループしようとすると、R でエラーが発生します。これが私のデータフレームのサブセットです(120000行を含む)。

                 time value      mean group
1 2017-01-01 12:00:00 0.507 0.5106533    NA
2 2017-01-01 12:05:00 0.526 0.5106533    NA
3 2017-01-01 12:10:00 0.489 0.5106533    NA
4 2017-01-01 12:15:00 0.598 0.5106533    NA
5 2017-01-01 12:20:00 0.564 0.5106533    NA
6 2017-01-01 12:25:00 0.536 0.5106533    NA

次のような期待される結果で、期間に基づいてグループを作成したいとしましょう:

                 time value      mean group
1 2017-01-01 12:00:00 0.507 0.5106533    A
2 2017-01-01 12:05:00 0.526 0.5106533    A
3 2017-01-01 12:10:00 0.489 0.5106533    B
4 2017-01-01 12:15:00 0.598 0.5106533    B
5 2017-01-01 12:20:00 0.564 0.5106533    C
6 2017-01-01 12:25:00 0.536 0.5106533    C

次のコードを試しました:

for (i in 1:length(merged.data$group)){
  if (merged.data[as.POSIXlt(i)$time >= "2017-05-15 12:00:00 GMT" & 
as.POSIXlt(i)$time <= "2017-05-29 12:00:00 GMT",]){
   merged.data$group == "A"} 
  else if (merged.data[as.POSIXlt(i)$time >= "2017-08-11 12:00:00" & 
as.POSIXlt(i)$time <= "2017-11-29 16:00:00",]){
    merged.data$group == "B"}
  else if (merged.data[as.POSIXlt(i)$time >= "2018-01-05 12:00:00" & 
as.POSIXlt(i)$time <= "2018-02-16 16:00:00",]){
    merged.data$group == "C"}
}

次のエラーが表示されます。

Error in as.POSIXlt.numeric(i) : 'origin' must be supplied

わかりません。POSIXlt がオリジンの問題を解決していると思いましたか? ただし、R での時間の問題についての私の理解は少し混乱していることを認めます。時間/日付を処理する必要があるたびにコーディングするのに苦労しています...

誰かが私を助けてくれることを願っています。不明な点がある場合、または質問に答えるためにもっと/より良い情報が必要な場合は、遠慮なく教えてください。

よろしくお願いします。

4

2 に答える 2