如何移除R语言data.frame中Temp_id列逗号前的字符串内容?
移除R语言data.frame中指定列逗号及之前内容的方法
方法1:Base R 原生正则替换(gsub)
直接使用Base R的gsub函数,通过正则表达式匹配并替换掉逗号及之前的所有内容。正则^.*,会贪婪匹配从字符串开头到最后一个逗号的所有字符,将其替换为空字符串即可;没有逗号的行则保持原样。
# 原始数据 dummy_data <- structure(list(Date = c("24/06/2002", "24/06/2002", "01/07/2002", "01/07/2002", "08/07/2002", "08/07/2002","15/07/2002","17/07/2002", "22/07/2002", "22/07/2002", "29/07/2002"), Temp_id= c("ABC", "M567", "M567", "M567", "XYZ", "XYZ", "T300/500,XYZ", "T300/390,XYZ", "0000,M300", "1234,M678", "ABC")), class = "data.frame", row.names = c(NA, -11L)) # 处理Temp_id列 dummy_data$Temp_id <- gsub("^.*,", "", dummy_data$Temp_id) # 输出结果 dummy_data
方法2:Tidyverse 生态解决方案(stringr包)
如果日常使用tidyverse工具链,可以用stringr包的字符串处理函数完成需求:先用str_extract提取逗号后的内容,再用coalesce处理无逗号的行(避免返回NA),最后移除提取结果开头的逗号。
library(tidyverse) # 数据清洗 dummy_data_cleaned <- dummy_data %>% mutate( Temp_id = coalesce(str_extract(Temp_id, ",(.*)$"), Temp_id) %>% str_remove("^,") ) # 输出结果 dummy_data_cleaned
两种方法处理后,Temp_id列都会符合目标要求:仅保留逗号后的字符串,无逗号的行保持原始值不变。
内容的提问来源于stack exchange,提问作者Bella_18
相关产品推荐
相关产品推荐

