簡體   English   中英

在dplyr中使用case_when更改新列時遇到問題

[英]Trouble mutating new column using case_when in dplyr

我想使用數據幀上Código列的不同長度值來更改新列。

ods <- readODS::read_ods('http://www.arcotel.gob.ec/wp-content/uploads/2016/09/proyeccion_cantonal_total_2010-2020_seg%C3%BAn_INEC1.ods', skip = 2)

我試過在像這樣的突變體中使用case_when:

mutate(ods, Provincia = case_when(
        length(ods$Código) == 3 ~ str_extract(ods$Código, '[[:digit:]]{1}'),
        length(ods$Código) == 4 ~ str_extract(ods$Código, '[[:digit:]]{2}')
))

只要值的長度為3,就應該使用Código的第一個數字創建一個新的Provincia列,否則應提取兩個數字。 運行上面的代碼時,我只會得到NA

使用nchar ,它將計算每次觀察中的字符數:

ods <- mutate(ods, Provincia = case_when(
         nchar(ods$Código) == 3 ~ str_extract(ods$Código, '[[:digit:]]{1}'),
         nchar(ods$Código) == 4 ~ str_extract(ods$Código, '[[:digit:]]{2}')
 ))

結果:

    > ods %>% pull(Provincia)
  [1] "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "1"  "2"  "2"  "2"  "2"  "2"  "2" 
 [22] "2"  "3"  "3"  "3"  "3"  "3"  "3"  "3"  "4"  "4"  "4"  "4"  "4"  "4"  "5"  "5"  "5"  "5"  "5"  "5"  "5" 
 [43] "6"  "6"  "6"  "6"  "6"  "6"  "6"  "6"  "6"  "6"  "7"  "7"  "7"  "7"  "7"  "7"  "7"  "7"  "7"  "7"  "7" 
 [64] "7"  "7"  "7"  "8"  "8"  "8"  "8"  "8"  "8"  "8"  "8"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9" 
 [85] "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "9"  "10" "10" "10" "10" "10" "10"
[106] "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "11" "12" "12" "12" "12" "12"
[127] "12" "12" "12" "12" "12" "12" "12" "12" "13" "13" "13" "13" "13" "13" "13" "13" "13" "13" "13" "13" "13"
[148] "13" "13" "13" "13" "13" "13" "13" "13" "13" "14" "14" "14" "14" "14" "14" "14" "14" "14" "14" "14" "14"
[169] "15" "15" "15" "15" "15" "16" "16" "16" "16" "17" "17" "17" "17" "17" "17" "17" "17" "18" "18" "18" "18"
[190] "18" "18" "18" "18" "18" "19" "19" "19" "19" "19" "19" "19" "19" "19" "20" "20" "20" "21" "21" "21" "21"
[211] "21" "21" "21" "22" "22" "22" "22" "23" "24" "24" "24" "90" "90" "90"

暫無
暫無

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

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