【问题标题】:How to create a matrix with specified row and col names, from a dataframe containing the data and the names如何从包含数据和名称的数据框中创建具有指定行和列名称的矩阵
【发布时间】:2018-10-21 21:29:18
【问题描述】:

如果我有这样的数据框:

dataframe <- data.frame(Date = seq(as.Date("2018/01/01"), by = "day", length.out = 5),
                        ID1 = c(1, 2, 3, 4, 5),
                        ID2 = c(6, 7, 8, 9, 10))

> dataframe
        Date ID1 ID2
1 2018-01-01   1   6
2 2018-01-02   2   7
3 2018-01-03   3   8
4 2018-01-04   4   9
5 2018-01-05   5  10

将其转换为矩阵的最佳方法是什么,观察作为数据,日期作为行名,ID 作为列名?

我认为会有一个函数可以转换数据帧并将某些列/行作为列/行名称的参数,但我还没有找到。

额外问题:我是否需要为每个 ID 设置不同的矩阵?我需要创建一个 3D 数组或类似的吗?我怎么能这样做?

【问题讨论】:

  • 为什么需要这个矩阵?
  • row.names(dataframe) = dataframe$Date; dataframe = as.matrix(dataframe[,-1])
  • G5W 的上述解决方案完美运行。基本上,我只需要根据 Date 列分配行名,然后将 df 的适当索引转换为矩阵。列名是自动取的。

标签: r dataframe matrix


【解决方案1】:

先设置行名,再转为矩阵:

as.matrix(data.frame(dataframe[-1], row.names = dataframe$Date))

另一种可能性是使用 zoo 或 xts 对象。这将为数据创建一个矩阵并为日期定义一个索引属性。生成的对象属于 zoo 类,可以通过 zoo 包的函数进行操作。

library(zoo)
z <- read.zoo(dataframe)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 2021-12-27
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多