【问题标题】:How do I convert table formats in R如何在 R 中转换表格格式
【发布时间】:2023-03-19 06:08:02
【问题描述】:

具体来说,

我使用了以下设置:

newdata

我目前有一张表,目前列出如下:

X= 州,Y= 州内县,#= 某事物的总和

  • __ Y1 Y2 Y3 Yn
  • X1 ## ## ## ##
  • X2 ## ## ## ##
  • X3 ## ## ## ##
  • Xn ## ## ## ##

我需要一张如下表:

  • X1 Y1 ##
  • X1 Y2 ##
  • X1 Y3 ##
  • X1 Yn ##
  • X2 Y1 ##
  • X2 Y2 ##
  • X2 Y3 ##
  • X2 Yn ##
  • Xn Y1 ##
  • Xn Y2 ##
  • Xn Y3 ##
  • Xn Yn ##

【问题讨论】:

    标签: r tapply


    【解决方案1】:
    library(reshape2)
    new_data <- melt(old_data, id.vars=1)
    

    查看?melt 以了解有关语法的更多详细信息。

    示例:

    > df <- data.frame(x=1:5, y1=rnorm(5), y2=rnorm(5))
    > df
      x         y1         y2
    1 1 -1.3417817 -1.1777317
    2 2 -0.4014688  1.4653270
    3 3  0.4050132  1.5547598
    4 4  0.1622901 -1.2976084
    5 5 -0.7207541 -0.1203277
    > melt(df, id.vars=1)
       x variable      value
    1  1       y1 -1.3417817
    2  2       y1 -0.4014688
    3  3       y1  0.4050132
    4  4       y1  0.1622901
    5  5       y1 -0.7207541
    6  1       y2 -1.1777317
    7  2       y2  1.4653270
    8  3       y2  1.5547598
    9  4       y2 -1.2976084
    10 5       y2 -0.1203277
    

    【讨论】:

      【解决方案2】:

      一些示例数据

      mydata <- data.frame(num=rnorm(40),
                           gp1=rep(LETTERS[1:2],2),
                           gp2=rep(letters[1:2],each=2))
      

      并对其应用tapply

      tmp <- tapply(mydata$num, list(mydata$gp1, mydata$gp2), sum)
      

      tapply 的结果是一个矩阵,但是你可以把它当成一个表格,用as.data.frame.table 来转换它。这不依赖于任何额外的包。

      as.data.frame.table(tmp)
      

      两种不同的数据结构如下:

      > tmp
               a         b
      A 8.381483  6.373657
      B 2.379303 -1.189488
      > as.data.frame.table(tmp)
        Var1 Var2      Freq
      1    A    a  8.381483
      2    B    a  2.379303
      3    A    b  6.373657
      4    B    b -1.189488
      

      【讨论】:

      • 不错,as.data.frame.table 比 melt 快很多,但仍然占用大量内存。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 2017-12-27
      • 1970-01-01
      相关资源
      最近更新 更多