2016-06-26 6 views
0

行番号を使用して時間単位のデータを月単位でグループ化するために、data.tableに新しい列を追加したいとします。行番号1〜744 = "7月"、745〜1488 = "8月"などこれは非常に簡単なことであるはずですが、行を参照して列を作成できる解決策を見つけるのが難しいです数。data.table:新しい列(月)

+1

再現可能な例を表示してください。 'c(" Jul "、" Aug "、....)[rep(1:12、each = 744)]' – akrun

答えて

0

このようなデータを扱う私の好ましい方法は、ほとんどの形式の日付での作業が非常に簡単になるため、lubridateというパッケージを使用することです。ただし、組み込み関数を使用して同じ結果を達成することもできます。もう少し仕事。今

pacman::p_load(lubridate) 

df <- data.frame(Location = seq(1:10), 
       DateandTime = seq(Sys.time(), by="hours", 
            length=10), 
       Value = rnorm(10)) 
df 

df$month <- month(df$DateandTime) 
df 

が別のオブジェクトから行インデックスによってそれを参照します

newdf <- data.frame(rowindex = seq(10,1)) 

for(i in 1:nrow(df)){ 
    newdf$month[newdf$rowindex == i] <- df$month[i] 
} 

を今、あなたは、これはそれを反映するために微調整する必要があるかもしれませんわずかに異なる何かを意味します。だから@akrunは再現可能な例を求めていた。しかし、何か問題があれば、私に知らせてください。必要に応じてサンプルソリューションを調整します。

+1

すばらしい返信をありがとう。それは正しい軌道に乗るのを助けました。最後に、次のようにして各行に日付/時刻を割り当てました。 – Bertie1810

+0

申し訳ありませんが、私はdt1 <-POSIXlt( "2011-07-01 00:00:00")を使いました<-seq(dt1 、by = "hour"、length = 8784)、データフレームに列として追加しました。 – Bertie1810

+0

@ Bertie1810あなたが適切な解決策を見つけたらうれしいです。いったん時間がたつと、あなた自身の質問に答えを加えて、それを解決策としてマークすることができます。もし私が小さな助けを提供することができれば、アップヴォートは常に評価されるだろうが、当然のことではない。 :)記録のために私はあなたの質問をupvoteでしたが、他の誰かがdownvotedとそれをキャンセルしました。 –

関連する問題