数据集描述了多个集群的多次重复测量,每个测量集群对包含在单个列中。我想将数据整理成较长的(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 个集群,每个集群有 100 个测量值。我尝试使用tidyr::gather()
并tidyr::pivot_longer()
迭代每个测量值,但生成的中间数据帧的大小呈指数增长。tidyr::pivot_longer()
由于值属于不同的类别,因此尝试一步完成是不可能的。我想不出一种方法来将它按比例矢量化。