R语言字符串处理——一列中多种特殊字符的替换和拆分

文章介绍了如何在R中利用dplyr和tidyr库处理不规则数据,包括删除特殊字符和单个数字,按符号分列,以及合并数字到同一列。通过正则表达式进行替换和拆分操作,以达到数据清洗的目的。
摘要由CSDN通过智能技术生成

删除一列中多种字符串

需求1

需要把图中的多位数字保留,去掉特殊符号和单个数字
经观察,除了多位数字外,其余数字左边为”:“,右边为”,“,根据这个规律进行正则替换。
在这里插入图片描述

代码

library(dplyr)
library(tidyr)
dat <- read.csv("data.csv")
##不分列直接替换
wm <- c("\\{",":[0-9]}",":[0-9],","\"")
datt <- as.data.frame(sapply(dat, function(x) gsub(paste(wm,collapse = "|"), " ",x)))

结果

在这里插入图片描述

需求2

当想要分列时,就需要先按符号分列,再替换。列数需要提前确定。

代码

library(dplyr)
library(tidyr)
dat <- read.csv("data.csv")
## 建立空矩阵
count_dat <- matrix(NA, nrow = nrow(dat),1)
## 统计每行包含":"符号个数,确定拆分列数
for (i in 1:nrow(dat)) {
  temp <- dat[i,]
  count_dat[i,1] <- str_count(temp,":")
}
max(count_dat)  # 328
## 按:拆分列
datn <- str_split_fixed(dat$cleanaggregation,":",max(count_dat)+1) %>%data.frame()
## 删除符号
wordstoremove <- c("\\{","[0-9]}","[0-9],","\"")
datnn <- as.data.frame(sapply(datn, function(x) gsub(paste(wordstoremove,collapse = "|"),"",x)))

结果

在这里插入图片描述

需求3

想要把每行的数字都合并为一列

################################################
##不分列直接替换
wm <- c("\\{",":[0-9]}",":[0-9],","\"")
datt <- as.data.frame(sapply(dat, function(x) gsub(paste(wm,collapse = "|"), " ",x)))

##############################################
# 就比如,第一行有3个数字,第2个数字放到第2行,第3个数字放到第3行,这样顺延

dattt <- datt %>% as_tibble() %>%
  separate_rows(cleanaggregation, sep = " ")
## 删除只有” “的行
narows <- which(dattt=="")
dattt <- dattt[-narows,]

结果

在这里插入图片描述

以上就是不规整数据的字符串替换整理。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值