簡體   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