Regex R:使用;Gsub";丢失了我的数据帧格式
我有这个数据框:Regex R:使用;Gsub";丢失了我的数据帧格式,regex,r,gsub,Regex,R,Gsub,我有这个数据框: Campaña Visitas Compras 1 faceBOOKAds-1 524 2 2 FacebookAds-2 487 24 3 fcebookAds-3 258 4 4 Email1 8 7 我想要这个: Campaña Visitas Compras 1 FBAds1 524 2 2 FBAds2
Campaña Visitas Compras
1 faceBOOKAds-1 524 2
2 FacebookAds-2 487 24
3 fcebookAds-3 258 4
4 Email1 8 7
我想要这个:
Campaña Visitas Compras
1 FBAds1 524 2
2 FBAds2 487 24
3 FBAds3 258 4
4 Email1 8 7
1) 我读到“GSUB”会做这项工作,所以我用了这个:
DataGoogle2 <- gsub("faceBOOKAds-1", "FBAds", DataGoogle1$Campaña)
2) 然后我尝试使用:as.data.frame:
DataGoogle2 <- as.data.frame(gsub("faceBOOKAds-1", "FBAds", DataGoogle1$Campaña))
我怎样才能得到我需要的?我知道更换的方法不太好。我最需要的是不要放松数据帧格式,但是欢迎对REGEX部分的任何帮助 您可以使用transform(和另一个正则表达式)
DataGoogle2您还可以直接替换第一列。这将仅通过对第一列进行操作来替换第一列中所需的零件。这将保持所需的数据帧结构
> dat[[1]] <- gsub("f(.*)[-]", "FBAds", dat[[1]], ignore.case = TRUE)
> dat
# Campaña Visitas Compras
# 1 FBAds1 524 2
# 2 FBAds2 487 24
# 3 FBAds3 258 4
# 4 Email1 8 7
>dat[[1]]dat
#康帕尼亚观光酒店
#1 FBAds1 524 2
#2 FBAds2 487 24
#3 FBAds3 258 4
#4电邮18 7
…当您使用以下代码时,假定您的原始数据被称为dat
:
DataGoogle2 <- gsub("faceBOOKAds-1", "FBAds", DataGoogle1$Campaña)
DataGoogle2谢谢史蒂夫。请你解释一下为什么sub而不是gsub。这是因为此数据框中的眼波可能只有一个(每行/条目)?2) 在正则表达式中:(?i)表示大写字母“F”是可选的?我将如何应用它来表示:无论任何字母是否为大写,只要匹配这个正则表达式即可。非常感谢。@OmarGonzales我补充了一些解释。谢谢,Sven。我想为R推荐一本关于正则表达式的好书。我正在阅读“Master Regular Expressions 3Edition”,其中谈到了基于Perl引擎的正则表达式。但欢迎任何建议*只是想弄清楚:正则表达式中的\\1\\2是什么?我认为它与“广告”部分相同,但不要理解其中的逻辑。@OmarGonzales,你可能想在“替换…”下找到进一步的解释。顺便说一句,beeing能够使用(?i)
而不是ignore.case=TRUE
对我来说是新事物。Gaston Sanchez对正则表达式和字符串处理做了很好的解释。这是一个大约100页的免费PDF,标题是“在R中处理和处理字符串”。他没有提到捕获组和环顾断言,但他在基础知识方面非常出色。顺便问一下,你是否也在R-Help上发布了这个问题(或与之非常类似的问题)?我的理解是,在两个网站上同时问相同或类似的问题时,交叉发帖、多发帖或任何术语都不是一个好的做法。谢谢@user3694373!现在更清楚的是,我所尝试的是错误的。谢谢你,伙计!
DataGoogle2 <- transform(DataGoogle1, Campaña = sub("(?i)fa?cebook(.*)-(.*)",
"FB\\1\\2", Campaña))
# Campaña Visitas Compras
# 1 FBAds1 524 2
# 2 FBAds2 487 24
# 3 FBAds3 258 4
# 4 Email1 8 7
> dat[[1]] <- gsub("f(.*)[-]", "FBAds", dat[[1]], ignore.case = TRUE)
> dat
# Campaña Visitas Compras
# 1 FBAds1 524 2
# 2 FBAds2 487 24
# 3 FBAds3 258 4
# 4 Email1 8 7
DataGoogle2 <- gsub("faceBOOKAds-1", "FBAds", DataGoogle1$Campaña)
DataGoogle2$Campaña <- gsub("faceBOOKAds-1", "FBAds", DataGoogle1$Campaña)