【R】時系列データのサンプル作成

こんてんつ

時系列データのサンプルを簡易的に用意する方法を記述する。今回は、timevalueの値を持つサンプルを作成する。

  • 乱数生成を使った作戦
  • data.frameでベタ打ち作戦
  • csvファイルから読み込む作戦
  • (補足)mm:ss形式の行を追加する方法

乱数生成を使った作成

コード

dat <- 
  data.frame(
    time = runif(30, min = 0, max = 300),
    value = rnorm(30)
    ) %>%
  arrange(time) %>%
  mutate(time = round(time, digits = 2),
         value = round(value, digits = 2)+time*0.05)

出力

time value
24.73   1.2765
35.25   2.8025
40.4    1.85
41.61   1.3005
76.63   4.2915
85.84   1.632
117.06  5.493
134.09  5.9745
137.32  6.436
138.69  6.2945
142.5   6.515
154.26  7.923
155.73  7.4765
168.1   8.905
192.52  10.946
197.1   11.065
211.52  12.476
215.73  10.5265
220.98  9.269
249.13  10.0165
250.8   11.17
271.21  11.8405
271.72  14.346
274.44  14.362
280.4   12.26
281.12  13.776
282 14.56
284 11.79
293.47  15.3735
296.67  13.9835

解説

runif(30, min = 0, max = 300)は0から300の範囲で30個のランダムな値を生成する。rnorm(30)正規分布から30個のランダムな値を生成する。data.frameは一般的には、次の形で利用する。

# データフレームの作成
my_data <- data.frame(
  Name = c("Alice", "Bob", "Charlie"),
  Age = c(25, 30, 22),
  Score = c(95, 89, 75)
)

# 作成したデータフレームの表示
print(my_data)

#出力
    Name Age Score
1  Alice  25    95
2    Bob  30    89
3 Charlie  22    75

その他、arrange(time)timeの昇順にソートを行っている。また、mutateround()で四捨五入をして丸めている。

contents-open.hatenablog.com

data.frameでベタ打ち作戦

コード

dat <- data.frame(
  time = c(24.73, 35.25, 40.4, 41.61, 76.63, 85.84, 117.06, 134.09, 137.32, 138.69, 
           142.5, 154.26, 155.73, 168.1, 192.52, 197.1, 211.52, 215.73, 220.98, 249.13, 
           250.8, 271.21, 271.72, 274.44, 280.4, 281.12, 282, 284, 293.47, 296.67),
  value = c(1.2765, 2.8025, 1.85, 1.3005, 4.2915, 1.632, 5.493, 5.9745, 6.436, 6.2945,
            6.515, 7.923, 7.4765, 8.905, 10.946, 11.065, 12.476, 10.5265, 9.269, 10.0165,
            11.17, 11.8405, 14.346, 14.362, 12.26, 13.776, 14.56, 11.79, 15.3735, 13.9835)
)

csvファイルから読み込む作戦

コード

dat <- read.csv("mydata.csv")

(補足)mm:ss形式の行を追加する方法

dat %>% 
  mutate(time_mmss = sprintf("%02d:%02d", time %/% 60, round(time %% 60))) %>%
  select(time, time_mmss, value)