Набор данных описывает несколько повторяющихся измерений для нескольких кластеров, причем каждая пара измерений-кластеров содержится в одном столбце. Я хотел бы преобразовать данные в длинный (er) формат, чтобы один столбец содержал информацию о кластере, но каждое измерение остается в своем собственном столбце.
# 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()
шаг невозможна из-за того, что значения принадлежат другому классу. Я не могу придумать способ векторизации этого масштаба.