我有以下数据集
id<-c(1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4)
s02<-c(001,002,003,004,001,002,003,004,005,001,002,003,004,005,006,007,001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016,017,018,019,020,021,022,023,024,025,026,027,028,029)
dat1<-data.frame(id,s02)
我希望基于这个 dat1 创建一个数据集。我希望有一个 R 代码自动创建 n s02 作为 s02__0、s02__1、s02__2、s02__3、s02__4,在这种情况下我的 n==5。然后根据 dat1 中的 ID,代码应将每个 s02 分配给数据帧中相应的 s02__0 到 s02__4。这些行由根据行数创建的另一个 ID_2 唯一标识。如果创建的行中 s02 较少,则应分配剩余单元格##N/A##。如果 s02 大于 n,则形成另一个从唯一 ID_2 增量的新行以容纳额外的 s02,并且每个空白单元格仍填充有 ##N/A##。
从上面的数据集中,我希望得到以下输出
id<-c(1,2,3,3,4,4,4,4,4,4)
id_2<-c(1,1,1,2,1,2,3,4,5,6)
s02__0<-c(1,1,1,6,1,6,11,16,21,26)
s02__1<-c(2,2,2,7,2,7,12,17,22,27)
s02__2<-c(3,3,3,##N/A##,3,8,13,18,23,28)
s02__3<-c(4,4,4,##N/A##,4,9,14,19,24,29)
s02__4<-c(##N/A##,5,5,##N/A##,5,10,15,20,25,##N/A##)
dat2<-data.frame(id,id_2,s02__0,s02__1,s02__2,s02__3,s02__4)