如何从数据框中删除特殊字符
How to remove special character from data frame
我已从 url 导入数据并使用以下代码将其转换为数据框:
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
我尝试了几种方法来从第 3 到第 8 列中获取 * 特殊字符并将该列更改为数字,但由于此字符在 R 中也有含义,因此这些方法均无效。我试过:
x <- "~!@#$%^&*"
str_replace_all(x, as.character(try[,3:8]), " ")
我也试过:
gsub("*","",try[,3:8])
唯一正确识别 * 字符的函数是 grep 和 grapl,但我需要另一个函数来使用 grep 输出删除“*”特殊字符。
grep('*',try)
试试这个:
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
我已从 url 导入数据并使用以下代码将其转换为数据框:
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
我尝试了几种方法来从第 3 到第 8 列中获取 * 特殊字符并将该列更改为数字,但由于此字符在 R 中也有含义,因此这些方法均无效。我试过:
x <- "~!@#$%^&*"
str_replace_all(x, as.character(try[,3:8]), " ")
我也试过:
gsub("*","",try[,3:8])
唯一正确识别 * 字符的函数是 grep 和 grapl,但我需要另一个函数来使用 grep 输出删除“*”特殊字符。
grep('*',try)
试试这个:
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