2017-05-21 20 views
0

グループ単位で列の値に基づいて行を挿入したいとします。 たとえば、次の例では、グループAの2つの観測値とグループBの1つの観測値があります。出力データフレームの作成に興味があります。出力データフレームには、入力データフレームの日付の前後2日が含まれます。 (例えば、グループA(100-2,100-1,100,100 + 1100 + 2))グループのrの値に基づいて行を挿入する

入力:

Group Date 
A 100 
A 15 
B 35 

出力

Group Date 
A 98 
A 99 
A 100 
A 101 
A 102 
A 13 
A 14 
A 15 
A 16 
A 17 
B 33 
B 34 
B 35 
B 36 
B 37 

答えて

0

我々は使用することができますdata.table

library(data.table) 
setDT(df1)[, .(Date = seq((Date-2), Date+2, by = 1)), .(Group, n = 1:nrow(df1)) 
        ][, n := NULL][] 
# Group Date 
# 1:  A 98 
# 2:  A 99 
# 3:  A 100 
# 4:  A 101 
# 5:  A 102 
# 6:  A 13 
# 7:  A 14 
# 8:  A 15 
# 9:  A 16 
#10:  A 17 
#11:  B 33 
#12:  B 34 
#13:  B 35 
#14:  B 36 
#15:  B 37 
関連する問題