假設我的資料具有以下結構:
Data<-structure(list(Date = structure(c(17955, 17955, 17954, 17954,
17953), class = "Date"), name = c("QLD to SA", "QLD.NSW to SA.NSW",
"QLD to SA", "QLD.NSW to SA.NSW", "QLD to SA"), value = c(-2.33611657245688,
-1.48768446629906, -2.36699803453011, -1.46423011205677, -2.32284554692339
)), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"
))
我想創建一個名為 Group 的新列。本專欄依賴于我專欄中的正則運算式name。我想要的是這樣的輸出:
Date name value Group
2019-02-28 QLD to SA -2.34 QLD
2019-02-28 QLD.NSW to SA.NSW -1.49 QLD-NSW
2019-02-27 QLD to SA -2.37 QLD
2019-02-27 QLD.NSW to SA.NSW -1.46 QLD-NSW
2019-02-26 QLD to SA -2.32 QLD
我認為這樣的事情可以發揮作用:
Data%>%mutate(Group=case_when(
str_detect(name, regex("QLD", ignore_case=TRUE)) ~ "QLD",
str_detect(name, regex("^QLD.NSW", ignore_case=TRUE)) ~ "QLD-NSW",
T ~ "number"))
它失敗了,因為列組只識別第一種情況QLD并在第二種情況下停止它QLD-NSW
uj5u.com熱心網友回復:
您只需交換以 . 開頭的兩行代碼str_detect。
請在下面找到一個代表。
代表
- 代碼
library(tidyverse)
Data%>%mutate(Group=case_when(
str_detect(name, regex("^QLD\\.NSW", ignore_case=TRUE)) ~ "QLD-NSW",
str_detect(name, regex("QLD", ignore_case=TRUE)) ~ "QLD",
T ~ "number"))
- 輸出
#> # A tibble: 5 x 4
#> Date name value Group
#> <date> <chr> <dbl> <chr>
#> 1 2019-02-28 QLD to SA -2.34 QLD
#> 2 2019-02-28 QLD.NSW to SA.NSW -1.49 QLD-NSW
#> 3 2019-02-27 QLD to SA -2.37 QLD
#> 4 2019-02-27 QLD.NSW to SA.NSW -1.46 QLD-NSW
#> 5 2019-02-26 QLD to SA -2.32 QLD
由reprex 包于 2022-03-22 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448810.html
