0

我有一个包含 1 列地址的 csv 文件。它具有以下值:

A <- structure(list(Address = structure(1:3, .Label = c("&2340 P St", 
 "&5656 N St", "456 B Street"), class = "factor")), .Names = "Address", 
 row.names = c(NA, 3L), class = "data.frame")
A
##        Address
## 1   &2340 P St
## 2   &5656 N St
## 3 456 B Street

我需要清理数据——如果有“&”,则删除所有字符(或用空格替换)。我在我的 2.csv 文件中期待这个结果:

##        Address
## 1 456 B Street

这是代码:

 A <-read.csv("U:/161/1.csv", header=T,sep=",")
 B<-gsub("&", " ", A$ADDRESS1, ignore.case = TRUE)
 write.table(B, file = "U:/161/2.csv", sep = ","
 , col.names = NA, qmethod = "double")

它只删除“&”。如何删除地址的其余部分?

4

1 回答 1

0

使用greporgrepl标识哪些行包含&然后排除这些行

B <- droplevels(A[!grepl('&', A$Address), ,drop=FALSE])
B
##       Address
## 3 456 B Street

请注意,我将[调用包装起来droplevels以确保&也删除未使用的级别(带有 的级别),因为在这种情况下,结果只会是 1 行,我将drop=FALSE其保留Bdata.frame

要使用grep(返回索引),您将使用-

B <- droplevels(A[-grep('&', A$Address), ,drop=FALSE])
B
于 2012-10-16T23:27:43.133 回答