修改将colname转换为factor的数据帧

修改将colname转换为factor的数据帧,r,R,我正在分析示例中一些结构为“df”的数据,我需要将其转换为类似下面的“示例”对象: a<- c(1:3) b<- c(1:3) c<- c(1:3) df<- data.frame(a, b, c) col1<- c("a","a","a", "b", "b", "b", "c", "c", "c") col2<- rep(1:3,3) example<- data.frame(col1, col2) aa快速base R解决方案是stack:

我正在分析示例中一些结构为“df”的数据,我需要将其转换为类似下面的“示例”对象:

a<- c(1:3)
b<- c(1:3)
c<- c(1:3)

df<- data.frame(a, b, c)

col1<- c("a","a","a", "b", "b", "b", "c", "c", "c")
col2<- rep(1:3,3)

example<- data.frame(col1, col2)

aa快速
base R
解决方案是
stack

stack(df)
  values ind
1      1   a
2      2   a
3      3   a
4      1   b
5      2   b
6      3   b
7      1   c
8      2   c
9      3   c

我们可以使用
pivot\u更长的时间

library(dplyr)
library(tidyr)
df %>% 
    pivot_longer(cols = everything())

您还可以从
tidyr
包中使用
gather()

gather(df, colnames(df), key = "col1", value = "col2")
key
value
在结果数据框中用作新列名。在
tidyverse
语法中使用,如下所示

df %>%
   gather(colnames(df), key = "col1", value = "col2")

这太棒了!一些问题:-我有多个列,因此我必须使用参数col=-col to exclude排除其中一些列。-我必须使用最新版本的tidyr@federicofookes是的,请务必提及这些问题。谢谢你,就这样。我必须重新安装tidyr以获得最新版本,在旧版本中,pivot\u longer不可用。谢谢