2

データセットは、複数のクラスターの複数の繰り返し測定を記述し、各測定クラスターのペアは 1 つの列に含まれています。1 つの列がクラスターに関する情報を提供するように、データを長い (より長い) 形式にまとめたいと思いますが、各測定値は独自の列に残ります。

# Current format
df_wider <- data.frame(
  id = 1:5,
  fruit_1 = sample(fruit, size = 5),
  date_1 = sample(seq(as.Date('2020/01/01'), as.Date('2020/05/01'), by="day"), 5),
  number_1 = sample(1:100, 5),
  fruit_2 = sample(fruit, size = 5),
  date_2 = sample(seq(as.Date('2020/01/01'), as.Date('2020/05/01'), by="day"), 5),
  number_2 = sample(1:100, 5),
  fruit_3 = sample(fruit, size = 5),
  date_3 = sample(seq(as.Date('2020/01/01'), as.Date('2020/05/01'), by="day"), 5),
  number_3 = sample(1:100, 5)
)

# Desired format
df_longer <- data.frame(
  id = rep(1:5, each = 3),
  cluster = rep(1:3, 5),
  fruit = sample(fruit, size = 15),
  date = sample(seq(as.Date('2020/01/01'), as.Date('2020/05/01'), by="day"), 15),
  number = sample(1:100, 15)
)

実際のデータセットには、それぞれ数百の測定値の最大 25 のクラスターが含まれています。tidyr::gather()各測定を使用して反復しようとしましtidyr::pivot_longer()たが、結果の中間データフレームのサイズは指数関数的に増加しました。値のクラスが異なるため、単一のtidyr::pivot_longer()ステップでこれを試みることは不可能です。これをベクトル化してスケールアップする方法を考えることができません。

4

2 に答える 2