簡體   English   中英

基於字符串中的 position 的條件字符串匹配 (r)

[英]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.

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