当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。