簡體   English   中英

更改 R 中的列名稱

[英]Changing names of columns in R

我想寫一個 function 來更改 dataframe 中的列名。 我有很多問卷(A、B、C..),我想將每個問卷的列命名為問卷名稱序列和第一列的編號,即名為 id(id、A1、A2、A3、 id,B1,B2,B3,id,C1,C2,C3...)。

我寫了這樣的代碼:

col_names <- paste("A", 0:50, sep = "")
names(data) <- col_names
data <- rename(data, id = A0)

這適用於特定的問題 A,該數據 si 保存在 dataframe 命名數據中,長度為 50,但我想將其轉換為 function,它將重命名任何 Z6A8064B3DF47945555775 的列。

嘗試這個?

my_rename = function(data, label = "A") {
  names(data) = c("id", paste0(label, 1:(ncol(data) - 1)))
}

它是基於數據列數的動態的,您可以提供您想要的任何label ,默認為“A”。

您也可以使用 package glue

library(glue)

column_names <- function(data, label = "A") {
  names(data) <- glue::glue("{label}{1:ncol(data)}")
  head(data)
}

Just bear in mind that when you enclose an expression like label or 1:ncol(data) in braces {} they will be evaluated as R codes and the rest will be printed as character strings such is the case with paste function.

這是一個使用setNames和內置airquality數據集作為示例數據的簡單選項:


# Original variable names:

head(datasets::airquality)

#>   Ozone Solar.R Wind Temp Month Day
#> 1    41     190  7.4   67     5   1
#> 2    36     118  8.0   72     5   2
#> 3    12     149 12.6   74     5   3
#> 4    18     313 11.5   62     5   4
#> 5    NA      NA 14.3   56     5   5
#> 6    28      NA 14.9   66     5   6

# New variable names:

mydataframe <- setNames(datasets::airquality, paste0('A', seq(1:length(datasets::airquality))))

head(mydataframe)

#>   A1  A2   A3 A4 A5 A6
#> 1 41 190  7.4 67  5  1
#> 2 36 118  8.0 72  5  2
#> 3 12 149 12.6 74  5  3
#> 4 18 313 11.5 62  5  4
#> 5 NA  NA 14.3 56  5  5
#> 6 28  NA 14.9 66  5  6

代表 package (v0.3.0) 於 2021 年 3 月 16 日創建

或者,如果你想看看它在for loop中的樣子:

column_rename_function <- function(x){
  for (i in 1:length(x)){
    colnames(x)[i] <- paste0('A', i)
  }
  return(head(x))
}

column_rename_function(datasets::airquality)
#>   A1  A2   A3 A4 A5 A6
#> 1 41 190  7.4 67  5  1
#> 2 36 118  8.0 72  5  2
#> 3 12 149 12.6 74  5  3
#> 4 18 313 11.5 62  5  4
#> 5 NA  NA 14.3 56  5  5
#> 6 28  NA 14.9 66  5  6

代表 package (v0.3.0) 於 2021 年 3 月 16 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM