如何重命名包含“(N)”的列名?
How to rename column names containing "(N)"?
我想从列名称中删除“(N)”。
示例数据:
df <- tibble(
name = c("A", "B", "C", "D"),
`id (N)` = c(1, 2, 3, 4),
`Number (N)` = c(3, 1, 2, 8)
)
到目前为止我已经了解了,但不知道如何找出正则表达式的其余部分
df %>%
rename_with(stringr::str_replace,
pattern = "[//(],N//)]", replacement = "")
但是“数字 (N)”中的 n 不见了。
name id N) umber (N)
1 A 1 3
2 B 2 1
3 C 3 2
4 D 4 8
可能的解决方案:
library(tidyverse)
df <- tibble(
name = c("A", "B", "C", "D"),
`id (N)` = c(1, 2, 3, 4),
`Number (N)` = c(3, 1, 2, 8)
)
df %>% names %>% str_remove("\s*\(N\)\s*") %>% set_names(df,.)
#> # A tibble: 4 × 3
#> name id Number
#> <chr> <dbl> <dbl>
#> 1 A 1 3
#> 2 B 2 1
#> 3 C 3 2
#> 4 D 4 8
一个简单的解决方案是
colnames(df) <- gsub(" \(N\)", "", colnames(df))
一个班轮:rename_with(df, ~str_remove_all(., ' \(N\)'))
仅限 或 dplyr
:rename_with(df, ~sub(' \(N\)', '', .))
我们可以使用 dplyr
包中的 rename_with
函数并应用一个函数(在本例中 str_remove
来自 stringr
包)。
然后用\
转义(
:
library(dplyr)
library(stringr)
df %>%
rename_with(~str_remove_all(., ' \(N\)'))
name id Number
<chr> <dbl> <dbl>
1 A 1 3
2 B 2 1
3 C 3 2
4 D 4 8
也许你可以试试
setNames(df, gsub("\s\(.*\)", "", names(df)))
这给出了
name id Number
<chr> <dbl> <dbl>
1 A 1 3
2 B 2 1
3 C 3 2
4 D 4 8
我想从列名称中删除“(N)”。
示例数据:
df <- tibble(
name = c("A", "B", "C", "D"),
`id (N)` = c(1, 2, 3, 4),
`Number (N)` = c(3, 1, 2, 8)
)
到目前为止我已经了解了,但不知道如何找出正则表达式的其余部分
df %>%
rename_with(stringr::str_replace,
pattern = "[//(],N//)]", replacement = "")
但是“数字 (N)”中的 n 不见了。
name id N) umber (N)
1 A 1 3
2 B 2 1
3 C 3 2
4 D 4 8
可能的解决方案:
library(tidyverse)
df <- tibble(
name = c("A", "B", "C", "D"),
`id (N)` = c(1, 2, 3, 4),
`Number (N)` = c(3, 1, 2, 8)
)
df %>% names %>% str_remove("\s*\(N\)\s*") %>% set_names(df,.)
#> # A tibble: 4 × 3
#> name id Number
#> <chr> <dbl> <dbl>
#> 1 A 1 3
#> 2 B 2 1
#> 3 C 3 2
#> 4 D 4 8
一个简单的解决方案是
colnames(df) <- gsub(" \(N\)", "", colnames(df))
一个班轮:rename_with(df, ~str_remove_all(., ' \(N\)'))
或 dplyr
:rename_with(df, ~sub(' \(N\)', '', .))
我们可以使用 dplyr
包中的 rename_with
函数并应用一个函数(在本例中 str_remove
来自 stringr
包)。
然后用\
转义(
:
library(dplyr)
library(stringr)
df %>%
rename_with(~str_remove_all(., ' \(N\)'))
name id Number
<chr> <dbl> <dbl>
1 A 1 3
2 B 2 1
3 C 3 2
4 D 4 8
也许你可以试试
setNames(df, gsub("\s\(.*\)", "", names(df)))
这给出了
name id Number
<chr> <dbl> <dbl>
1 A 1 3
2 B 2 1
3 C 3 2
4 D 4 8