[英]Conditional string matching based on position in string (r)
我正在嘗試在我的 dataframe 中填寫一些缺失的數據。 有些人沒有輸入他們的性別,但它被編碼在他們的 ID 中(ID 中的第二個字母)。 我發現使用條件模式匹配很困難,因為我只有一個字母“模式”要查找。 我需要一種方式來說明我只希望 if_else/grep 在字符串的第二個元素中查找匹配模式(因為它會在第一個元素中找到匹配項)
這是我的數據的摘錄...
stack <- tibble(ID = c("HM208", "MF009", "FF103", "FM003", "NF002", "NM003"), Sex= c("M", "F", NA, NA, NA, NA))
所以我需要做類似的事情(使用 dplyr)......
stack <- stack %>% mutate(Sex = if_else("contains M in second element", M, Sex ) %>%
mutate(Sex = if_else("contains F in second element", F, Sex )
我很感激任何建議。
stack %>% mutate(
Sex = substr(ID, 2,2)
)
這是一個解釋協議變化的版本。 我們根據ID
的 substring 是使用ifelse()
是 M 還是 F 來為Sex
分配一個值。
stack <- tibble(ID = c("HM208", "MF009", "FF103", "FM003", "NF002", "NM003"), Sex= c("M", "F", NA, NA, NA, NA))
library(dplyr)
stack %>% mutate(Sex = (ifelse(substr(ID,2,2) %in% c("M","F"),
substr(ID,2,2),Sex )))
...和 output。
# A tibble: 6 x 2
ID Sex
<chr> <chr>
1 HM208 M
2 MF009 F
3 FF103 F
4 FM003 M
5 NF002 F
6 NM003 M
>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.