r - 按相关列拆分 R 中的矩阵或数据集

标签 r matrix set

对我来说,这是一个简单但可笑的艰苦过程。
我想弄清楚如何从数据中制作一组矩阵。

如果你有R,


data(iris)
dim(iris)

[1] 150   5

是维度

iris 是 R 编程中给出的数据

当你做
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.

如果你想要一个函数,那么看看这个:
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由两列随机数和包含 ID 的第三列组成,这些 ID 是大写字母 A、B、C、D、E 和 F,这意味着您有 5 个不同的 ID 可以拆分,然后 along abind 中的参数call 不必设置为 5,因为它不是指 ID 的数量,而是指结果数组的维数 ;)。看这个例子
> 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

关于r - 按相关列拆分 R 中的矩阵或数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617697/

相关文章:

r - ggplot2 中使用 viridis 的气泡图图例颜色

r - 如何在 R 括号表示法中使用函数变量?

matlab - matlab中的归一化矩阵

python - 从矩阵 B 的每一行中减去矩阵 A 的每一行,无需循环

algorithm - 给定一个包含随机数的矩阵,如果某个位置有1,则使该行和该列的所有元素都为1

r - 获取 5 列数据框的 3 列中值组合的总和

r - R 中的 If/Else 语句

java - 如何删除字符串中的重复单词并以相同的顺序显示它们

mysql - 使用案例更新 SQL 表

c++ - bst 比较模板上的错误 C2664