如何选择性移除dataframe元素中的指定字符?基于R语言gsub函数的实现方法
用gsub实现Sample列的格式转换
当然可以用gsub轻松搞定这个需求!咱们先看你的数据规律:每个Sample元素的结构都是「字母+数字+小数点+数字」,你需要保留的是小数点前面的那个数字(比如A1.1留1,A2.1留2)。
具体实现代码
# 先创建你的数据框 Sample <- c("A1.1","B1.1","A1.2","B1.2","A2.1","B2.1","A2.2","B2.2") X <- c(1,1,2,4,3,5,3,2) Y <- c(2,3,1,5,4,6,2,2) df <- data.frame(Sample, X, Y) # 用gsub修改Sample列 df$Sample <- gsub("^[A-Za-z](\\d)\\.\\d$", "\\1", df$Sample) # 查看结果 df
正则表达式解释
咱们拆解一下这里用的正则:
^[A-Za-z]:匹配字符串开头的任意大小写字母(也就是你要去掉的第一个字符)(\\d):匹配一个数字,并用括号把它标记为捕获组(后面用\\1来引用这个捕获到的内容)\\.:匹配小数点(因为.在正则里是匹配任意字符的特殊符号,所以要加反斜杠转义)\\d$:匹配字符串末尾的任意数字(你要去掉的小数点及之后的部分)- 替换成
\\1就是只保留我们捕获到的那个数字
运行上面的代码后,你的df会变成这样:
Sample X Y 1 1 1 2 2 1 1 3 3 1 2 1 4 1 4 5 5 2 3 4 6 2 5 6 7 2 3 2 8 2 2 2
完全符合你的要求哦!
内容的提问来源于stack exchange,提问作者Dswede43
相关产品推荐
相关产品推荐

