gpt4 book ai didi

r - 从矩阵创建数据框

转载 作者:行者123 更新时间:2023-12-03 06:18:51 25 4
gpt4 key购买 nike

如何获取与现有矩阵具有相同数据的数据框?

我的矩阵的简化示例:

mat <- matrix(c(0, 0.5, 1, 0.1, 0.2, 0.3, 0.3, 0.4, 0.5),
ncol = 3, nrow = 3,
dimnames = list(NULL, c("time", "C_0", "C_1")))

> mat
time C_0 C_1
[1,] 0.0 0.1 0.3
[2,] 0.5 0.2 0.4
[3,] 1.0 0.3 0.5

我想创建一个如下所示的数据框:

     name   time   val
1 C_0 0.0 0.1
2 C_0 0.5 0.2
3 C_0 1.0 0.3
4 C_1 0.0 0.3
5 C_1 0.5 0.4
6 C_1 1.0 0.5

我的所有尝试都很笨拙,例如:

data.frame(cbind(c(rep("C_1", 3), rep("C_2", 3)),
rbind(cbind(mat[,"time"], mat[,"C_0"]),
cbind(mat[,"time"], mat[,"C_1"]))))

有人知道如何更优雅地做到这一点吗?请注意,我的真实数据还有几列(40 列)。

最佳答案

如果您将 time 列更改为行名称,则可以使用 as.data.frame(as.table(mat)) 对于这样的简单情况。

示例:

data <- c(0.1, 0.2, 0.3, 0.3, 0.4, 0.5)
dimnames <- list(time=c(0, 0.5, 1), name=c("C_0", "C_1"))
mat <- matrix(data, ncol=2, nrow=3, dimnames=dimnames)
as.data.frame(as.table(mat))
time name Freq
1 0 C_0 0.1
2 0.5 C_0 0.2
3 1 C_0 0.3
4 0 C_1 0.3
5 0.5 C_1 0.4
6 1 C_1 0.5

在这种情况下,时间和名称都是因素。您可能想将时间转换回数字,或者可能并不重要。

关于r - 从矩阵创建数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15885111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com