У меня есть dataframe, где один столбец является матрицей, а не вектором, и я хотел бы разбить его на несколько столбцов с векторным значением.В R, разбитый вектор значащий столбец в кадре данных на несколько столбцов
Например, это
set.seed(101)
Df <- data.frame(x = runif(100),
y = round(runif(100)))
descriptives <- function(arg) c(mean(arg), median(arg), sd(arg))
results <- aggregate(x ~ y, data=Df, descriptives)
дает мне
> results
y x.1 x.2 x.3
1 0 0.4710224 0.4280053 0.3206661
2 1 0.5769064 0.6220120 0.2683387
который является 2х2 dataframe со второго столбца, являющегося 2x3 матрица:
> dim(results)
[1] 2 2
> results[,2]
[,1] [,2] [,3]
[1,] 0.4710224 0.4280053 0.3206661
[2,] 0.5769064 0.6220120 0.2683387
Я хотел бы разбить эту матрицу на три столбца.
я мог бы сделать
results <- cbind(results$y, as.data.frame(results[,2]))
names(results) <- c('y', 'mean', 'median', 'sd')
> results
y mean median sd
1 0 0.4710224 0.4280053 0.3206661
2 1 0.5769064 0.6220120 0.2683387
Но есть более прямой и менее Hacky способ? Я думаю о чем-то вроде tidyr
's separate
?
может быть что-то вроде 'as.data.frame (матрицы (unlist (результаты), nrow = nrow (результаты)))'? – Sotos