【发布时间】:2023-02-09 17:44:54
【问题描述】:
我有一个大数据集。 ID 列包含又长又复杂的名称,我想用更简单的名称替换这些值名称。 它们的名称中都包含一个连续的数字,所以我想用这个简单的数字替换长值名称。 但是因为我有很多值名称要替换,所以在为每个值写一行时我会得到很长的代码。 我正在寻找一种方法来通过循环减少这段代码,甚至更好:以一种整洁的方式,这样我就不必写所有这些行,唯一不同的是连续的数字
这是一些虚拟数据和我的管道替换值名称的简短版本:
library(tidyverse)
ID <- c('number04', 'number05', 'number06', 'number07', 'number08', 'number09', 'number10')
df <- tibble(ID)
df <- df |>
mutate(ID = if_else(str_detect(ID, pattern = "04"), "04", ID) |>
mutate(ID = if_else(str_detect(ID, pattern = "05"), "05", ID) |>
mutate(ID = if_else(str_detect(ID, pattern = "06"), "06", ID) |>
mutate(ID = if_else(str_detect(ID, pattern = "07"), "07", ID) |>
mutate(ID = if_else(str_detect(ID, pattern = "08"), "08", ID) |>
mutate(ID = if_else(str_detect(ID, pattern = "09"), "09", ID) |>
mutate(ID = if_else(str_detect(ID, pattern = "10"), "10", ID)
【问题讨论】:
-
你可以这样做:
readr::parse_number(df$ID)