Я написал код, включающий функцию accumarray, чтобы преобразовать следующий входной набор данных
входной набор данных
в другой кадр данных, представленный новой матрицей, содержащей нули и, в конечном счете, 1 или 2 значения в соответствии со значениями для переменных A, B и C входного набора данных, следующим образом:
выходной набор данных
Я написал следующий код, но я бы хотел сделать его динамическим циклом, поскольку входная таблица может содержать различное количество переменных (по-прежнему с 2 значениями на переменную).
required_subsA <- cbind(rep(x = 1:nrow(input),
times = 2),c(input$A,input$A.1))
required_vals <- rep(x = 1,
times = nrow(x = required_subs))
required_sz <- c(nrow(x = input), 10)
A <- cbind(paste("s", 1:4, sep = "_"),
as.data.frame(x = pracma::accumarray(subs = required_subsA,
val = required_vals,
sz = required_sz)))
names(x = A) <- c("subject",paste("A", 1:10, sep = "."))
required_subsB <- cbind(rep(x = 1:nrow(input),
times = 2),c(input$B,input$B.1))
B <- cbind(as.data.frame(x = pracma::accumarray(subs = required_subsB,
val = required_vals,
sz = required_sz)))
names(x = B) <- c(paste("B", 1:10, sep = "."))
required_subsC <- cbind(rep(x = 1:nrow(input),
times = 2),c(input$C,input$C.1))
C <- cbind(as.data.frame(x = pracma::accumarray(subs = required_subsC,
val = required_vals,
sz = required_sz)))
names(x = C) <- c(paste("C", 1:10, sep = "."))
data_final<-cbind(A,B,C)