簡體   English   中英

在R中,如何使用正則表達式處理數據框中的變量?

[英]In R, how can I manipulate variable in dataframe using regular expression?

這是數據集

df1 <- data.frame("id" = c("ebi.ac.uk:MIAMExpress:Reporter:A-MEXP-503.100044", 
                       "ebi.ac.uk:MIAMExpress:Reporter:A-MEXP-783.100435",
                       "ebi.ac.uk:MIAMExpress:Reporter:C-DEA-783.100435"),
              "Name" = c("ABC", "DEF", ""))

數據集的乘積

                                                  id   Name
1   ebi.ac.uk:MIAMExpress:Reporter:A-MEXP-503.100044    ABC
2   ebi.ac.uk:MIAMExpress:Reporter:A-MEXP-503.100435    DEF
3   ebi.ac.uk:MIAMExpress:Reporter:A-MEXP-503.100488     

我想使數據框看起來像這樣

       id     Name
1  100044      ABC
2  100435      DEF
3  100488       NA 

誰能告訴我如何解決這個問題?

正則表達式查找最后一個點的方法:

df1$id <- as.character(df1$id)
regexpr("\\.[^\\.]*$", df1$id) # may not need \\ on second one

sapply(gregexpr("\\\\.", x), tail, 1)

較容易記住的非正則表達式方式:

df1$id <- as.character(df1$id)

df1$id <- sapply(strsplit(df1$id,split="\\."),tail,1)
df1$Name[df1$Name == ""] <- NA

df1
  id Name 1 100044 ABC 2 100435 DEF 3 100435 <NA> 

sapply(strsplit(df1$id,split="\\\\."),tail,1)這里開始

暫無
暫無

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

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