[英]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.