データセットは、複数のクラスターの複数の繰り返し測定を記述し、各測定クラスターのペアは 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()
ステップでこれを試みることは不可能です。これをベクトル化してスケールアップする方法を考えることができません。