簡體   English   中英

使用 tidyverse 替換一些字符值

[英]replace some character values using tidyverse

我有一個數據框,其中有一列如下所示,我想使用tidyr::separate將其拆分為 3 列。 問題是某些行中的第一段由兩部分組成(前 Troms-Romsa)

dummy data:
               df <- data.frame(
                 stringsAsFactors = FALSE,
                 fka = c(
                   "Troms-Romsa - Female - 65+",
                   "Aust-Agder - Female - 20-29",
                   "Aust-Agder - Man - 50-64",
                   "Troms-Romsa - Man - 65+",
                   "Bergen - Man - 65+",
                   "Bergen - Female - 65+",
                   "Aust-Agder - Female - 30-39")) 

這里的頭:

                          fka
1  Troms-Romsa - Female - 65+
2 Aust-Agder - Female - 20-29
3    Aust-Agder - Man - 50-64
4     Troms-Romsa - Man - 65+
5          Bergen - Man - 65+
6       Bergen - Female - 65+
7 Aust-Agder - Female - 30-39 

我嘗試用dplyr::across替換/重命名那些,如下所示,但我做不到。

df %>% 
  mutate(across(.fns = ~replace(., . ==  "Aust-Agder" , "AustAgder"))) 

如何解決這個問題? 我的目標是在最后將 fka col 轉換為 3 個 cols:

... %>%
separate(fka, c('county_name' , 'gender' , 'age_group'), sep="-" , extra = "merge")

嘗試反轉 data.frame 中行的元素,以便有問題的元素是行中的最后一個,如下所示:

df <- data.frame(
  stringsAsFactors = FALSE,
  fka = c(
    "Troms-Romsa - Female - 65+",
    "Aust-Agder - Female - 20-29",
    "Aust-Agder - Man - 50-64",
    "Troms-Romsa - Man - 65+",
    "Bergen - Man - 65+",
    "Bergen - Female - 65+",
    "Aust-Agder - Female - 30-39",
    "Finnmark - Finnmárku - Female - 50-64")) 

df$fka = (sapply(strsplit(x = df$fka, split = " - "), function(x) paste(rev(x), collapse = "_")))
df %>% separate(fka, c('age_group', 'gender',  'county_name'), sep="_" , extra = "merge")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM