[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
代碼儲存在複數欄位中,希望檢查是否有某些欄位符合特定字串規則,輸出True or False
目前用 dplyr::filter_at 是可以得到需要的結果
但需要另外產生一個data.frame再join回來
且要檢查多組不同字串規則時變得更為冗長
想問看看有沒有更好的寫法
ex:
ID 代碼一 代碼二 ... 代碼N
1 O33 O34 O354
2 O331 O354
3 OO33 O345
需要的結果
ID 代碼一 代碼二 ... 代碼N O33開頭 O34開頭 ...
1 O33 O34 O354 True True
2 O331 O354 True False
3 OO33 O345 False True
[程式範例]:
df <- read.csv( ...... )
require(dplyr)
dftemp <- filter_at(df, vars(starts_with("代碼")), any_vars(grepl("^O33", .)))
dftemp$O33開頭 <- True
df <- left_join(df, dftemp )
df$O33開頭 <- ifelse( is.na(df$O33開頭), False, True)
然後為 "O34開頭" 再做一次...