按相关列拆分R中的矩阵或数据集
对我来说,这是一个简单但却极其艰苦的过程。 我试图找出如何从数据中生成一组矩阵 如果你有R 做 尺寸是多少 iris是R编程中给出的数据 当你这样做的时候按相关列拆分R中的矩阵或数据集,r,matrix,set,R,Matrix,Set,对我来说,这是一个简单但却极其艰苦的过程。 我试图找出如何从数据中生成一组矩阵 如果你有R 做 尺寸是多少 iris是R编程中给出的数据 当你这样做的时候 iris(3) dim(iris3) [1] 50 4 3 你会得到一组三个矩阵,分成“物种”相关列 我如何编程/编写代码以便可以为其他数据集执行此操作 感谢您抽出时间访问您正在从abind软件包中查找abind功能: > library(abind) > IrisArray <- abind(split(iris[
iris(3)
dim(iris3)
[1] 50 4 3
你会得到一组三个矩阵,分成“物种”相关列
我如何编程/编写代码以便可以为其他数据集执行此操作
感谢您抽出时间访问您正在从
abind
软件包中查找abind
功能:
> library(abind)
> IrisArray <- abind(split(iris[, -5], iris[,5]), along=3)
> dim(IrisArray)
[1] 50 4 3 # these are the dimensions you want.
我不明白你在干什么<代码>虹膜(3)什么也不做,在这里抛出一个错误。(+1)@juba。也不太清楚。我猜您正在寻找
split(iris,iris$Species)
。是的,split(iris,iris$Species)是我想要的,但是split(iris,iris$Species)有所有的物种名称列。注意iris3有三个50乘4的矩阵。这很好,但是有没有一种方法可以让它大于3?由于Iris有3种,似乎是3种,但我的数据需要10种。沿
是绑定数组的维度,如果您的数据有10种将予以考虑,分割因子
将为您提供所需的信息。)
> library(abind)
> IrisArray <- abind(split(iris[, -5], iris[,5]), along=3)
> dim(IrisArray)
[1] 50 4 3 # these are the dimensions you want.
library(abind)
Splitbyfactor <- function(x, by='Species'){
ind <- which(colnames(x)==by)
abind(split(x[, -ind], x[,ind]), along=3)
}
dim(Splitbyfactor(iris, by='Species'))
[1] 50 4 3
> df <- data.frame(A=rnorm(10), B=rnorm(10), ID=rep(LETTERS[1:5], each=6))
> dim(df)
[1] 30 3
> dim(Splitbyfactor(df, by='ID'))
[1] 6 2 5