DATA = data.frame(STUDENT = c(1:3),
G1 = c(2,2,1),
G2 = c(3,5,4))
DATA1 = data.frame(STUDENT1 = c(0,1,1,0,0),
STUDENT2 = c(0,1,1,1,1),
STUDENT3 = c(1,1,1,1,0))
对于 DATA 中的每个学生,我希望创建一个包含 5 行的新列,想象一下用 0 填充所有行,但如果行号在 G1 和 G2 之间的范围内,则用值“1”填充该行来自每个学生的 DATA,如 DATA1 中所示
您可以在这里使用
apply
:
DATA[-1] |>
apply(1, \(x) { y <- seq(max(DATA$G2)); as.numeric(y >= x[1] & y <= x[2])}) |>
as.data.frame() |>
setNames(paste0(names(DATA[1]), DATA[[1]]))
#> STUDENT1 STUDENT2 STUDENT3
#> 1 0 0 1
#> 2 1 1 1
#> 3 1 1 1
#> 4 0 1 1
#> 5 0 1 0