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