Я видел ответы, данные здесь , но мне было интересно, может ли в моем случае быть эффективный способ в BASE R изменить мой input
data.frame на желаемый output
data.frame, показанный ниже?
input <- data.frame(id = c(1,3,6), school = LETTERS[1:3], read_1 = c(20,22,24),
read_1_sp = c(T,F,T), read_2 =c(45,47,49),read_2_sp = c(F,F,F),
math_1 =c(20,22,NA), math_1_sp = c(T,F,NA), math_2 = c(NA,35,37),
math_2_sp =c(NA,F,F))
output <- data.frame(id = c(rep(1,3),rep(3,4), rep(6, 3)),school = c(rep("A",3),rep("B",4), rep("C", 3)),
subject = c("read","read","math","read","read","math", "math","read","read","math"),
no.= c(1,2,1,1,2,1,2,1,2,2), score = c(20,45,20,22,47,22,35,24,49,37),
sp = c(T,F,T,T,F,T,T,T,F,T))