當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R dplyr rename 重命名列


rename() 使用new_name = old_name 語法更改各個變量的名稱; rename_with() 使用函數重命名列。

用法

rename(.data, ...)

rename_with(.data, .fn, .cols = everything(), ...)

參數

.data

數據幀、數據幀擴展(例如 tibble)或惰性數據幀(例如來自 dbplyr 或 dtplyr)。有關更多詳細信息,請參閱下麵的方法。

...

對於 rename() : < tidy-select > 使用 new_name = old_name 重命名選定的變量。

對於 rename_with() :傳遞給 .fn 的附加參數。

.fn

用於轉換所選 .cols 的函數。應返回與輸入長度相同的字符向量。

.cols

<tidy-select> 要重命名的列;默認為所有列。

.data 類型相同的對象。輸出具有以下屬性:

  • 行不受影響。

  • 列名稱已更改;列順序被保留。

  • DataFrame 屬性被保留。

  • 組已更新以反映新名稱。

方法

該函數是泛型函數,這意味著包可以為其他類提供實現(方法)。有關額外參數和行為差異,請參閱各個方法的文檔。

加載的包中當前提供以下方法: dbplyr ( tbl_lazy )、dplyr ( data.frame ) 。

也可以看看

其他單表動詞: arrange()filter()mutate()reframe()select()slice()summarise()

例子

iris <- as_tibble(iris) # so it prints a little nicer
rename(iris, petal_length = Petal.Length)
#> # A tibble: 150 × 5
#>    Sepal.Length Sepal.Width petal_length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ℹ 140 more rows

# Rename using a named vector and `all_of()`
lookup <- c(pl = "Petal.Length", sl = "Sepal.Length")
rename(iris, all_of(lookup))
#> # A tibble: 150 × 5
#>       sl Sepal.Width    pl Petal.Width Species
#>    <dbl>       <dbl> <dbl>       <dbl> <fct>  
#>  1   5.1         3.5   1.4         0.2 setosa 
#>  2   4.9         3     1.4         0.2 setosa 
#>  3   4.7         3.2   1.3         0.2 setosa 
#>  4   4.6         3.1   1.5         0.2 setosa 
#>  5   5           3.6   1.4         0.2 setosa 
#>  6   5.4         3.9   1.7         0.4 setosa 
#>  7   4.6         3.4   1.4         0.3 setosa 
#>  8   5           3.4   1.5         0.2 setosa 
#>  9   4.4         2.9   1.4         0.2 setosa 
#> 10   4.9         3.1   1.5         0.1 setosa 
#> # ℹ 140 more rows

# If your named vector might contain names that don't exist in the data,
# use `any_of()` instead
lookup <- c(lookup, new = "unknown")
try(rename(iris, all_of(lookup)))
#> Error in all_of(lookup) : Can't rename columns that don't exist.
#> ✖ Column `unknown` doesn't exist.
rename(iris, any_of(lookup))
#> # A tibble: 150 × 5
#>       sl Sepal.Width    pl Petal.Width Species
#>    <dbl>       <dbl> <dbl>       <dbl> <fct>  
#>  1   5.1         3.5   1.4         0.2 setosa 
#>  2   4.9         3     1.4         0.2 setosa 
#>  3   4.7         3.2   1.3         0.2 setosa 
#>  4   4.6         3.1   1.5         0.2 setosa 
#>  5   5           3.6   1.4         0.2 setosa 
#>  6   5.4         3.9   1.7         0.4 setosa 
#>  7   4.6         3.4   1.4         0.3 setosa 
#>  8   5           3.4   1.5         0.2 setosa 
#>  9   4.4         2.9   1.4         0.2 setosa 
#> 10   4.9         3.1   1.5         0.1 setosa 
#> # ℹ 140 more rows

rename_with(iris, toupper)
#> # A tibble: 150 × 5
#>    SEPAL.LENGTH SEPAL.WIDTH PETAL.LENGTH PETAL.WIDTH SPECIES
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ℹ 140 more rows
rename_with(iris, toupper, starts_with("Petal"))
#> # A tibble: 150 × 5
#>    Sepal.Length Sepal.Width PETAL.LENGTH PETAL.WIDTH Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ℹ 140 more rows
rename_with(iris, ~ tolower(gsub(".", "_", .x, fixed = TRUE)))
#> # A tibble: 150 × 5
#>    sepal_length sepal_width petal_length petal_width species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ℹ 140 more rows

# If your renaming function uses `paste0()`, make sure to set
# `recycle0 = TRUE` to ensure that empty selections are recycled correctly
try(rename_with(
  iris,
  ~ paste0("prefix_", .x),
  starts_with("nonexistent")
))
#> Error in rename_with(iris, ~paste0("prefix_", .x), starts_with("nonexistent")) : 
#>   `.fn` must return a vector of length 0, not 1.

rename_with(
  iris,
  ~ paste0("prefix_", .x, recycle0 = TRUE),
  starts_with("nonexistent")
)
#> # A tibble: 150 × 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1          5.1         3.5          1.4         0.2 setosa 
#>  2          4.9         3            1.4         0.2 setosa 
#>  3          4.7         3.2          1.3         0.2 setosa 
#>  4          4.6         3.1          1.5         0.2 setosa 
#>  5          5           3.6          1.4         0.2 setosa 
#>  6          5.4         3.9          1.7         0.4 setosa 
#>  7          4.6         3.4          1.4         0.3 setosa 
#>  8          5           3.4          1.5         0.2 setosa 
#>  9          4.4         2.9          1.4         0.2 setosa 
#> 10          4.9         3.1          1.5         0.1 setosa 
#> # ℹ 140 more rows
源代碼:R/rename.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Rename columns。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。