是否有一个R函数来转换数据帧

是否有一个R函数来转换数据帧,r,R,我在下面有一个数据集。我需要对它们进行转换,使变量名现在成为值 >(p2) B D F 36.0 38.93 36.06 我需要像下面这样的 p2 Col1 COl2 B 36.0 D 38.93 F 36.06 您可以使用Tidyverse中的聚集功能: library(tidyverse) gather(p2, key = "Col1", value = "Col2") 数据: p2 &l

我在下面有一个数据集。我需要对它们进行转换,使变量名现在成为值

>(p2)
   B        D        F 
  36.0    38.93    36.06
我需要像下面这样的

p2
Col1   COl2
 B      36.0
 D      38.93
 F      36.06

您可以使用Tidyverse中的
聚集
功能:

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

p2 <- c(B =36.0, D=38.93, F= 36.06)
p2如果这是一个向量:

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

嘿,我想你问的是一个简单的转置
t(p2)
。然后,您可以将行名设置为新列,并根据需要命名列。使用tidyr软件包中的
gather()
可以将
dput(p2)
的结果添加到您的问题中吗?是vector,data.frame吗?尝试
stack(p2)
这不起作用。你能提供你得到的错误吗?UseMethod中的错误(“聚集”):没有适用于“聚集”的方法应用于类“c('double','numeric')”的对象。哦,我想你有一个命名的向量。你能提供
类(p2)
的输出吗。也许您只需要将其转换为数据帧(如果需要):
data.frame(p2)
。或者,如果你需要一个矩阵,你可以将其转置,就像@Steve所建议的那样
p2 <- c(B = 36, D = 38.93, F = 36.06)
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")