【问题标题】:Is there a R function to transform the dataframe [duplicate]是否有R函数来转换数据框[重复]
【发布时间】:2019-12-24 11:06:30
【问题描述】:

我在下面有一个数据集。我需要对它们进行转换,以便变量名称现在是值

>(p2)
   B        D        F 
  36.0    38.93    36.06

我需要像下面这样

p2
Col1   COl2
 B      36.0
 D      38.93
 F      36.06

【问题讨论】:

  • 嘿,我想你要问的是一个简单的转置t(p2)。然后,您可以将行名设置为新列,并根据需要命名列。
  • 使用 tidyr 包中的 gather()
  • 您能否将dput(p2) 的结果添加到您的问题中?是vector,data.frame吗?
  • 试试stack(p2)

标签: r


【解决方案1】:

您可以使用 Tidyverse 中的 gather 函数:

library(tidyverse)
gather(p2, key = "Col1", value = "Col2")

【讨论】:

  • 这不起作用
  • 你能提供你得到的错误吗?
  • UseMethod("gather_") 中的错误:没有适用于 'gather_' 的方法应用于“c('double', 'numeric')”类的对象
  • 哦,我猜你有一个命名向量。您能否提供class(p2) 的输出。也许您只需要将其转换为数据框(如果需要):data.frame(p2)。或者,如果您需要矩阵,也可以转置它,正如@Steve 建议的那样
【解决方案2】:
data.frame(Col1= names(p2), Col2 = p2, row.names = NULL) 

数据:

p2 <- c(B =36.0, D=38.93, F= 36.06)

【讨论】:

    【解决方案3】:

    如果这是一个向量:

    p2 <- c(B = 36, D = 38.93, F = 36.06)
    

    然后从包 tibble 中的 enframe 可能会有所帮助:

    library(tibble)
    enframe(p2)
    # # A tibble: 3 x 2
    # name  value
    # <chr> <dbl>
    # 1 B      36  
    # 2 D      38.9
    # 3 F      36.1
    

    您可以使用更改名称

    enframe(p2, "Col1", "Col2")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2021-03-28
      • 2021-11-17
      • 2019-02-12
      • 2021-02-22
      • 2020-07-14
      • 2019-08-31
      • 1970-01-01
      相关资源
      最近更新 更多