2012-10-16 60 views
0

我有一個csv文件,其中有1列地址。它具有像值:使用R替換字符

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") 

它不僅能消除「&」。我如何刪除剩餘的地址?

+0

要刪除的地址的其餘部分是什麼? –

+2

你不應該保留前兩項?如果你想使用'&'移除行,你可以使用'grep('&',A $ Address)' – Justin

+0

啊,這可能是OP後面的內容。 –

回答

0

使用grepgrepl,以確定哪些行包含&然後排除這些行

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

通知我包裹[呼叫droplevels,以確保未使用的水平(那些&)被丟棄 也,因爲在這種情況下結果將只有1行,我包括drop=FALSE保持B作爲data.frame

要使用grep(它返回索引)您將使用-

B <- droplevels(A[-grep('&', A$Address), ,drop=FALSE]) 
B 
+0

'grep'或'grepl'都可以工作,語法略有不同。查看我的編輯 – mnel

+0

您可能有一個名爲'F'的變量,使用'drop = FALSE'應該可以工作 – mnel