R 展开数据框列表

问题描述 投票:0回答:1
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 中所示

r expand
1个回答
0
投票

您可以在这里使用

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
© www.soinside.com 2019 - 2024. All rights reserved.