我已从网址导入数据并使用以下代码将其转换为数据框:
url <-"http://apims.doe.gov.my/v2/hourly2.php"
tables<- readHTMLTable(url)
try<-do.call(rbind, lapply(tables, data.frame, stringsAsFactors=FALSE))
数据有&#39; *&#39;旁边的数字。我想只隔离数字。 而不是
52* 45* 67* 55*
我有
52 45 67 55
我尝试了几种方法从第3列到第8列中获取*特殊字符并将列更改为数字,但由于此字符在R中也有含义,因此这些不起作用。我试过了:
x <- "~!@#$%^&*"
str_replace_all(x, as.character(try[,3:8]), " ")
我也尝试过:
gsub("*","",try[,3:8])
唯一正确识别*字符的函数是grep和grapl但是我需要另一个函数来使用grep输出来删除&#39; *&#39;特殊性格。
grep('*',try)
答案 0 :(得分: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