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

如何将命名向量更改为保留名称的数据帧?

  •  5
  • Christopher  · 技术社区  · 7 年前

    执行函数后,我有以下数据结构:

          A       B       C        D        E       
          92.08   90.68   54.09    92.87    97.40    
    
          F       G       H        I        J       ...       
          24.52   67.24   15.63    22.33    45.10   ...  
    

    output <- data.frame(output)
    output <- data.frame(rownames(output), rowSums(output))
    colnames(output) <- c("Category", "Value")
    output
    output %>% arrange(desc(output))
    

    如果你有更好的想法,请随时纠正我。 dplyr 赞赏解决方案。

    谢谢

    1 回复  |  直到 7 年前
        1
  •  12
  •   Jaap    7 年前

    正如@Axeman在评论中所说,你有一个命名向量。将其转换为数据帧的最简单方法是使用 stack -从R基函数。

    一些示例数据:

    output <- setNames(c(92.08,90.68,54.09,92.87,97.40), LETTERS[1:5])
    

    这看起来像:

    > output
        A     B     C     D     E 
    92.08 90.68 54.09 92.87 97.40
    

    转换为数据帧:

    df <- stack(output)
    

    其中给出:

    > df
      values ind
    1  92.08   A
    2  90.68   B
    3  54.09   C
    4  92.87   D
    5  97.40   E
    

    要获取问题中指定的列名称和列顺序,请执行以下操作:

    df <- setNames(stack(output)[2:1], c('Category','Value'))
    

    其中给出:

      Category Value
    1        A 92.08
    2        B 90.68
    3        C 54.09
    4        D 92.87
    5        E 97.40