Я нашел, чтобы сделать это, используя reshape2, но он довольно медленный и не совсем дает мне именно то, что я хочу. У меня есть data.frame, который выглядит следующим образом:конвертировать X-Y data.frame в матрицу для каждого столбца в R эффективно
df<-data.frame(expand.grid(1:10,1:10))
colnames(df) <- c("x","y")
for(i in 3:10){
df[i] <- runif(100,10,100)
}
Я бегу:
require(reshape2)
matrices<-lapply(colnames(df)[-c(1:2)],function(x){
mat<-acast(df, y~x, value.var=x, fill= 0,fun.aggregate = mean)
return(mat)
})
там у меня есть список матриц для каждого вектора значения в моих данных, я могу превратить это в массив от 1: 10,1: 10,1: 10, но я смотрю, есть ли более быстрый способ сделать это, поскольку мои наборы данных могут содержать много столбцов значений, и этот процесс может занять много времени, и я не могу как представляется, найти более эффективный способ сделать это.
Спасибо за любую помощь.
Взгляните на 'dcast' в' данных .table' упаковка. Он обычно намного эффективнее, чем 'reshape2'. –
Опишите, что вы хотите сделать, вместо того, чтобы просто ссылаться на «это», как если бы ваш заголовок сам объяснял – Frank
Я считаю, что мой ответ - один из наиболее эффективных методов решения проблемы, насколько я понимаю. – lmo