Я сам кодировал форму для многомерного объекта JavaScript, чтобы использовать его в процессе производства. Результатом является https://github.com/serbanghita/formToObject.js .
Опция заключается в использовании grouped
измерительных переменных data.table::melt
как:
library(data.table)
melt(setDT(x), id=1:2, measure=list(c("t2","t3"), c("y2","y3"), c("se2","se3")),
value.name=c("t2", "y2", "se2"))
#Or in short form
melt(setDT(x), id=1:2, measure=patterns("^t[2-3]", "^y", "^se"),
value.name=c("t2", "y2", "se2"))
# id t1 variable t2 y2 se2
# 1: Study1 1 1 2 0.1 0.5
# 2: Study1 1 2 3 0.2 0.7
Вы можете использовать reshape
n=length(grep("y",names(x)))
reshape(x,t(matrix(3:ncol(x),n)),idvar="id",dir="long")
id t1 time t2 y2 se2
Study1.1 Study1 1 1 2 0.1 0.5
Study1.2 Study1 1 2 3 0.2 0.7
, или вы можете использовать:
library(data.table)
cbind(melt(setDT(x),"id",data.frame(matrix(3:ncol(x),2)),t1=x$t1)
id variable value1 value2 value3 t1
1: Study1 1 2 0.1 0.5 1
2: Study1 2 3 0.2 0.7 1
reshape(x,data.frame(matrix(3:ncol(x),2)),idvar="id",dir="long")
id t1 time t2 y2 se2
1 Study1 1 1 2 0.1 0.5
2 Study1 1 2 3 0.2 0.7
n=length(grep("y",names(x))); reshape(x,t(matrix(3:ncol(x),n)),idvar="id",dir="long")
, где есть 2
в приведенном выше при использовании reshape
заменить на n
, и он будет работать
– Onyambu
13 July 2018 в 20:44