为了保持这种独立性,我们在末尾的注释中使用数据DF,由THB381 行组成。
我们使用by 处理每个ID 分别生成一个数据帧,其中ID 和CYC 从1 到最后一个CYC 用于那个ID。然后rbind将这样产生的数据帧一起。最后,我们将其与原始数据框合并。不使用任何包。
merge(DF,
do.call("rbind", by(DF, DF$ID, with, data.frame(ID = ID[1], CYC = 1:tail(CYC, 1)))),
all = TRUE)
给予:
ID CYC POS COUNTS2 CTIME_mins
1 THB381 1 NA NA NA
2 THB381 2 40 206 100.0297
3 THB381 3 40 212 100.0297
4 THB381 4 40 204 100.0296
5 THB381 5 40 186 100.0297
6 THB381 6 40 177 100.0297
7 THB381 7 40 195 100.0297
8 THB381 8 40 189 100.0130
9 THB381 9 40 195 100.0297
10 THB381 10 40 184 100.0297
11 THB381 11 40 209 100.0296
12 THB381 12 40 194 100.0297
13 THB381 13 40 197 100.0297
14 THB381 14 40 194 100.0297
注意
DF <- structure(list(ID = structure(c(9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L), .Label = c("B1", "B2", "B3", "S1", "S2",
"TCB995", "THB379", "THB380", "THB381", "THB382", "THB383", "THB384",
"THB385", "THB386", "THB387", "THB388", "TPB166", "TPN270", "WSTD"
), class = "factor"), POS = c(40L, 40L, 40L, 40L, 40L, 40L, 40L,
40L, 40L, 40L, 40L, 40L, 40L), CYC = 2:14, COUNTS2 = c(206L,
212L, 204L, 186L, 177L, 195L, 189L, 195L, 184L, 209L, 194L, 197L,
194L), CTIME_mins = c(100.02965, 100.02965, 100.02955, 100.02965,
100.02965, 100.02965, 100.012983333333, 100.02965, 100.02965,
100.02955, 100.02965, 100.02965, 100.02965)), .Names = c("ID",
"POS", "CYC", "COUNTS2", "CTIME_mins"), row.names = 256:268, class = "data.frame")