【问题标题】:Converting a matrix into a dataframe [duplicate]将矩阵转换为数据框[重复]
【发布时间】:2020-10-31 19:26:03
【问题描述】:

我正在尝试将内置矩阵 state.x77 转换/转换为数据帧。但是一旦使用 as.data.frame 进行转换,“Life Exp”列应该自动转换为“Life.Exp”;但是,当我使用 select() 函数使用 Life.Exp 或 Life Exp 选择该列时,两者都不存在。我是不是投错了?

library(dplyr)
library(tidyr)
state.x77 %>% as.data.frame %>% select(Frost,Life.Exp) %>% cor

【问题讨论】:

    标签: r function dataframe matrix dplyr


    【解决方案1】:

    加强同事的响应,as.data.frame 将 state.x77 矩阵转换为 data.frame,保留原始变量的名称。 Life Exp 变量包含空格,被 R 解释为特殊字符,因此要选择 data.frame 中的 Life Exp 列,您必须输入 (``)。因此:

    select (Frost, `Life Exp`)
    

    【讨论】:

      【解决方案2】:

      as.data.frame 出人意料地没有更改列名,因此其中的空间仍然存在,您可以 select 带有反引号的列。

      library(dplyr)
      state.x77 %>% as.data.frame %>% select(Frost,`Life Exp`) %>% cor
      

      但是,如果您使用data.frame,它会在两者之间添加".",所以现在您可以使用

      state.x77 %>% data.frame %>% select(Frost,Life.Exp) %>% cor
      

      【讨论】:

      • 谢谢先生,soo data.frame 与 as.data.frame 有何不同?
      • 除了像这些非常小的情况外,它们几乎相同。
      【解决方案3】:

      试试这个:

      library(dplyr)
      library(tidyr)
      state.x77 %>% as.data.frame() %>% select(Frost,`Life Exp`) %>% cor()
      
                  Frost Life Exp
      Frost    1.000000 0.262068
      Life Exp 0.262068 1.000000
      

      【讨论】:

        猜你喜欢
        • 2015-06-10
        • 1970-01-01
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-27
        相关资源
        最近更新 更多