【发布时间】:2021-04-28 06:48:21
【问题描述】:
考虑这个数据框:
df <- data.frame(Index=c(1:4),
Perc1=c("SC(23.43%","12.21%","","(18.44%"))
Index Perc1
1 1 SC(23.43%
2 2 12.21%
3 3
4 4 (18.44%
目标是使用正则表达式清理其列Perc1。
想要的结果:
Index Perc1
1 1 0.2343
2 2 0.1221
3 3
4 4 0.1844
我尝试了以下代码,但我得到一个错误和错误的结果。
pattern <- ".*([0-9]+.[0-9]{2})%"
ind <- grep(pattern, df$Perc1, value = FALSE)
df$Perc1 <- sub(pattern, "\\1", df$Perc1)
df$Perc1[-ind] <- NA
df$Perc1 <- as.numeric(df$perc1)/100
【问题讨论】: