2015-04-24 30 views
1

去除特殊字符我从一个网址导入的数据,并使用下面的代码它转换成一个数据帧:如何从数据帧

url <-"http://apims.doe.gov.my/v2/hourly2.php" 
tables<- readHTMLTable(url) 
try<-do.call(rbind, lapply(tables, data.frame, stringsAsFactors=FALSE)) 

数据有“*”旁边的数字。我想仅隔离数字。 所以不是

52* 45* 67* 55* 

52 45 67 55 

我尝试了好几种方法来获取*特殊字符进行到第8列第3和列更改为一个数字,但是,因为这个人物也有R中的含义不起作用。我曾尝试:

x <- "[email protected]#$%^&*" 
str_replace_all(x, as.character(try[,3:8]), " ") 

我也曾尝试:

gsub("*","",try[,3:8]) 

已经正确识别的*字符的唯一功能是grep和grapl但我需要将使用grep输出删除其它功能'*'特殊字符。

grep('*',try) 

回答

1

试试这个:

dat<-do.call(rbind, lapply(tables, data.frame, stringsAsFactors=FALSE)) 
dat[, -(1:2)] <- sapply(dat[, -(1:2)], function(col) { 
    as.numeric(sub("[*]$", "", col)) 
}) 
head(dat) 
# NEGERI...STATE     KAWASAN.AREA MASA.TIME06.00AM MASA.TIME07.00AM MASA.TIME08.00AM MASA.TIME09.00AM MASA.TIME10.00AM MASA.TIME11.00AM 
# NULL.1    Johor     Kota Tinggi    52    53    52    50    50    49 
# NULL.2    Johor     Larkin Lama    51    51    51    NA    51    51 
# NULL.3    Johor       Muar    45    45    45    45    45    45 
# NULL.4    Johor     Pasir Gudang    56    56    55    56    56    56 
# NULL.5    Kedah     Alor Setar    50    50    50    50    50    49 
# NULL.6    Kedah  Bakar Arang, Sg. Petani    NA    NA    NA    NA    NA    NA 
+0

是的,这工作!谢谢:) –

+0

如果@ lukeA的答案奏效,您可以考虑检查答案的复选标记,以帮助未来的海报知道这是最有用的答案。 –