繁体   English   中英

如何使列名成为 r 中的第一行?

[英]How to Make column names the first row in r?

我看过很多关于将第一行设为列名的教程,但没有解释如何反向操作。 我想将我的列名作为第一行值,并将列名更改为类似 var1、var2、var3 的名称。 这可以做到吗?

我打算稍后对一堆数据框进行行绑定,因此它们都需要相同的列名。

q = structure(list(shootings_per100k = c(8105.47466098618, 6925.42653239307
), lawtotal = c(3.00137104283906, 0.903522788541896), felony = c(0.787418655097614, 
0.409578330883717)), row.names = c("mean", "sd"), class = "data.frame")

有:

     shootings_per100k  lawtotal    felony
mean          8105.475 3.0013710 0.7874187
sd            6925.427 0.9035228 0.4095783

想:

                  var1      var2      var3                  
var  shootings_per100k  lawtotal    felony
mean          8105.475 3.0013710 0.7874187
sd            6925.427 0.9035228 0.4095783

编辑:我刚刚意识到,由于我计划稍后对多个数据框进行行绑定,因此最好让它们都具有相同的列名。 我更改了“想要”部分以反映所需的结果。

您可以使用 names() function 提取数据框的列名并将其行绑定到您的数据框。 然后再次使用 names() function 将现有名称覆盖为您想要的任何标准值。

q <- rbind(colnames(q), round(q, 4))
colnames(q) <- paste0("var", seq_len(ncol(q)))
rownames(q)[1] <- "var"
q
                  var1     var2   var3
var  shootings_per100k lawtotal felony
mean         8105.4747   3.0014 0.7874
sd           6925.4265   0.9035 0.4096

您也可以按如下方式进行。

library(tidyverse)

names <- enframe(colnames(df)) %>%
  pivot_wider(-name, names_from = value) %>%
  rename_with( ~ LETTERS[1:length(df)])

data <- as_tibble(df) %>%
  mutate(across(everything(), ~ as.character(.))) %>%
  rename_with(~ LETTERS[1:length(df)])

bind_rows(names, data)

# A tibble: 3 × 3
#   A                 B         C        
#   <chr>             <chr>     <chr>    
# 1 shootings_per100k lawtotal  felony   
# 2 8105.475          3.001371  0.7874187
# 3 6925.427          0.9035228 0.4095783

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM