2016-10-18 7 views
0

私は毎週の時系列データを含むデータフレームを持っています。 私はそれを毎日の補間値で線形約で変換する必要があります。毎週適切に短いスパンデータに変換するにはどうすればよいですか?

DATE  VALUE1 VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10 
02-01-2014 95.58 -22.43 73.16 0.09 0.3  1.53 7.14 67.17 7.33 74.5 
09-01-2014 113.65 -41  72.65 0.07 0.65 1.77 8.14 65.56 7.47 73.02 
16-01-2014 85.87 -15.29 70.59 0.13 0.18 1.78 6.19 65.88 7.5  73.38 

私は

02-01-2014 
03-01-2014 
04-01-2014 
05-01-2014 
06-01-2014 
07-01-2014 
08-01-2014 
09-01-2014 
10-01-2014 

任意の提案の値を持っている必要がありますか?

答えて

1

df <- readr::read_table("DATE  VALUE1 VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10 
02-01-2014 95.58 -22.43 73.16 0.09 0.3  1.53 7.14 67.17 7.33 74.5 
09-01-2014 113.65 -41  72.65 0.07 0.65 1.77 8.14 65.56 7.47 73.02 
16-01-2014 85.87 -15.29 70.59 0.13 0.18 1.78 6.19 65.88 7.5  73.38") 

Generati出力時間をngのデータの日付を解析:

days = as.Date("2014-01-02") + 0:14 
week_dates = as.Date(df$DATE, format = "%d-%m-%Y") 

そして最後に、線形近似:

f <- function(column) { 
    approx(week_dates, column, xout = days)$y 
} 
result <- sapply(df[-1], f) 
rownames(result) <- as.character(days) 
+0

それは働きました。私はapprox関数を使って同様の関数を使いました。 –

+0

あなたのために働いた場合、なぜ答えを受け入れるのですか? –

0

あなたは?zooページから例を適応中間値のための線形補間 で毎日周波数に毎週を変換するためのzooライブラリから

na.approx機能を使用できます。

readrパッケージを使用してデータを読み込む
library("zoo") 

weeklyDF = read.table(text="DATE  VALUE1 VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10 
02-01-2014 95.58 -22.43 73.16 0.09 0.3  1.53 7.14 67.17 7.33 74.5 
09-01-2014 113.65 -41  72.65 0.07 0.65 1.77 8.14 65.56 7.47 73.02 
16-01-2014 85.87 -15.29 70.59 0.13 0.18 1.78 6.19 65.88 7.5  73.38",header=TRUE,stringsAsFactors=FALSE) 


weeklyDF$DATE = as.Date(weekDF$DATE,format="%d-%m-%Y") 

weeklyZoo = zoo(x=weeklyDF[,-1],order.by=weeklyDF[,1]) 

weeklyZoo 
#   VALUE1 VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10 
#2014-01-02 95.58 -22.43 73.16 0.09 0.30 1.53 7.14 67.17 7.33 74.50 
#2014-01-09 113.65 -41.00 72.65 0.07 0.65 1.77 8.14 65.56 7.47 73.02 
#2014-01-16 85.87 -15.29 70.59 0.13 0.18 1.78 6.19 65.88 7.50 73.38 



dailyZoo = na.approx(weeklyZoo, xout = seq(start(weeklyZoo), end(weeklyZoo), by = "day")) 

dailyZoo 
#    VALUE1 VALUE2 VALUE3  VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10 
#2014-01-02 95.58000 -22.43000 73.16000 0.09000000 0.3000000 1.530000 7.140000 67.17000 7.330000 74.50000 
#2014-01-03 98.16143 -25.08286 73.08714 0.08714286 0.3500000 1.564286 7.282857 66.94000 7.350000 74.28857 
#2014-01-04 100.74286 -27.73571 73.01429 0.08428571 0.4000000 1.598571 7.425714 66.71000 7.370000 74.07714 
#2014-01-05 103.32429 -30.38857 72.94143 0.08142857 0.4500000 1.632857 7.568571 66.48000 7.390000 73.86571 
#2014-01-06 105.90571 -33.04143 72.86857 0.07857143 0.5000000 1.667143 7.711429 66.25000 7.410000 73.65429 
#2014-01-07 108.48714 -35.69429 72.79571 0.07571429 0.5500000 1.701429 7.854286 66.02000 7.430000 73.44286 
#2014-01-08 111.06857 -38.34714 72.72286 0.07285714 0.6000000 1.735714 7.997143 65.79000 7.450000 73.23143 
#2014-01-09 113.65000 -41.00000 72.65000 0.07000000 0.6500000 1.770000 8.140000 65.56000 7.470000 73.02000 
#2014-01-10 109.68143 -37.32714 72.35571 0.07857143 0.5828571 1.771429 7.861429 65.60571 7.474286 73.07143 
#2014-01-11 105.71286 -33.65429 72.06143 0.08714286 0.5157143 1.772857 7.582857 65.65143 7.478571 73.12286 
#2014-01-12 101.74429 -29.98143 71.76714 0.09571429 0.4485714 1.774286 7.304286 65.69714 7.482857 73.17429 
#2014-01-13 97.77571 -26.30857 71.47286 0.10428571 0.3814286 1.775714 7.025714 65.74286 7.487143 73.22571 
#2014-01-14 93.80714 -22.63571 71.17857 0.11285714 0.3142857 1.777143 6.747143 65.78857 7.491429 73.27714 
#2014-01-15 89.83857 -18.96286 70.88429 0.12142857 0.2471429 1.778571 6.468571 65.83429 7.495714 73.32857 
#2014-01-16 85.87000 -15.29000 70.59000 0.13000000 0.1800000 1.780000 6.190000 65.88000 7.500000 73.38000 
関連する問題