代码之家  ›  专栏  ›  技术社区  ›  Leprechault

使用数据帧创建对象类“matrix”“array”

  •  0
  • Leprechault  · 技术社区  · 6 月前

    我有一个 df 数据集。

    # My data
    df <- read.csv("https://raw.githubusercontent.com/Leprechault/trash/refs/heads/main/Dados_C3_data_planta.csv", sep=";")
    head(df)
    
    #        Data GLY_PN CRO_P MIPU_P CEN_P POA01_P CECRO_P COM_P MOR_PN
    #1 24-01-2024     53    40      3     0       0       0     0      0
    #2 25-01-2024     56     8      0    24       9       0     0      0
    #3 26-01-2024      0    27      0    47      26       0     0      0
    #4 27-01-2024      0     0      0     0       0       6    43     48
    #5 31-01-2024      0     0      0    62      35       0     0      0
    #6 02-02-2024      0     0      0    50      50       0     0      0
    #  COPA_PN RHY_P SOR_P
    #1       0     0     0
    #2       0     0     0
    #3       0     0     0
    #4       0     0     0
    #5       0     0     0
    #6       0     0     0
    

    我想转换类“matrix”“array”中的data.frame,但不适用于 as.matrix data.matrix 功能。 我理想的产出( df_to_matrix )是:

    #                GLY_PN CRO_P MIPU_P CEN_P POA01_P CECRO_P COM_P MOR_PN
    #1 24-01-2024     53    40      3     0       0       0     0      0
    #2 25-01-2024     56     8      0    24       9       0     0      0
    #3 26-01-2024      0    27      0    47      26       0     0      0
    #4 27-01-2024      0     0      0     0       0       6    43     48
    #5 31-01-2024      0     0      0    62      35       0     0      0
    #6 02-02-2024      0     0      0    50      50       0     0      0
    #  COPA_PN RHY_P SOR_P
    #1       0     0     0
    #2       0     0     0
    #3       0     0     0
    #4       0     0     0
    #5       0     0     0
    #6       0     0     0
    
    class(df_to_matrix)
    [1] "matrix" "array"
    

    第一列中没有列名,值为数字。请帮帮我好吗?

    3 回复  |  直到 6 月前
        1
  •  1
  •   Silver Spade    6 月前
    # Load the data
    df <- read.csv("https://raw.githubusercontent.com/Leprechault/trash/refs/heads/main/Dados_C3_data_planta.csv", sep=";")
    
    # Convert to matrix, excluding the first column (dates)
    df_to_matrix <- as.matrix(df[, -1])  # Exclude the first column
    
    # Optionally, convert character columns to numeric
    df_to_matrix <- apply(df_to_matrix, 2, as.numeric)
    
    # Check the class
    class(df_to_matrix)
    
    # Print the resulting matrix
    print(df_to_matrix)
    
        2
  •  1
  •   G. Grothendieck    6 月前

    将数据帧转换为zoo,然后转换为矩阵。

    library(zoo)
    df |> read.zoo(format = "%d-%m-%Y") |> as.matrix()
    

    给出这个矩阵,其行名由第一列构建,并使用yyyy-mm-dd格式进行规范化,与原始格式不同,该格式按日期顺序排序。

               GLY_PN CRO_P MIPU_P CEN_P POA01_P CECRO_P COM_P MOR_PN COPA_PN RHY_P SOR_P
    2024-01-24     53    40      3     0       0       0     0      0       0     0     0
    2024-01-25     56     8      0    24       9       0     0      0       0     0     0
    2024-01-26      0    27      0    47      26       0     0      0       0     0     0
    2024-01-27      0     0      0     0       0       6    43     48       0     0     0
    2024-01-31      0     0      0    62      35       0     0      0       0     0     0
    2024-02-02      0     0      0    50      50       0     0      0       0     0     0
    2024-02-05      0     0      0     0       0       0     0      0      99     0     0
    2024-02-06      0     0     81     0       0       0     0      0       0    17     0
    2024-02-07      0     0      0    58      10       0     0      0       0     0    33
    2024-02-09      0     0      0     0       0       0     0      0       0    32    64
    2024-02-10      0     0      0    47      22       0     0      0       0     0    64