这是我的数据格式,从 CSV 导入。
print(donnees_ventes3$V8[1:10])
[1] "0,00000" "0,00000" "0,00000" "0,00000" "0,00000" "0,00000" "4,22476" "0,00000" "1 086,16998" "0,00000"
我正在将“,”更改为“。”成功了,但是当删除千和百之间的空格时,它不起作用。
这是我尝试过的:
gsub(" ", "", donnees_ventes3$V8)
gsub(" ", "\\", donnees_ventes3$V8)
gsub("\\ ", "\\", donnees_ventes3$V8)
gsub("\\ ", "", donnees_ventes3$V8)
gsub("\\ ", "\\", donnees_ventes3$V8)` #thought there might be two space.
还尝试过:
str_replace_all(donnees_ventes3$V8,” “, “”)
当我尝试创建示例向量时,我无法给出可重现的示例:
exemple <- c("0,00000", "0,00000", "0,00000", "0,00000", "0,00000", "0,00000", "4,22476", "0,00000", "1 086,16998", "0,00000")
gsub(" ", "", exemple)
起作用并将第 9 个数据更改为“1086,16998”
说明和导入csv以及“ ”空格的格式有关。 这是我导入它的方法:
read.csv("csv path", encoding="UTF-8", header=FALSE)
可能是编码问题?
有人知道这里出了什么问题吗?
有时数据包含打印起来像空格但实际上不是空格的字符,例如 No-Break Space (NBSP),即
\U00A0
。
space <- "This is a space"
not_space <- "This\U00A0is\U00A0not"
print(space) # [1] "This is a space"
print(not_space) # [1] "This is not"
您不能使用
"\\s"
来替换这些字符:
gsub("\\s", "", not_space)
# [1] "This is not"
您可以使用
stringr::str_view()
轻松查看这些字符:
stringr::str_view(space)
# [1] │ This is a space
stringr::str_view(not_space)
# [1] │ This{\u00a0}is{\u00a0}not
一旦知道其字符代码,您就可以将其删除:
gsub("\U00A0", "", not_space)
# [1] "Thisisnot"
或者,根据您的最终目标,您可能希望删除所有非数字字符:
v <- c("1\U{00A0}086,16998", "1\U{00A0}086,16998")
print(v) # [1] "1 086,16998"
gsub("\\D+", "", v)
# [1] "108616998" "108616998"
或者,如果您尝试删除空格并将逗号更改为小数点,您可以删除所有不是数字和逗号的字符,然后替换逗号:
v |>
gsub("[^0-9,]", "", x=_) |>
gsub(",", ".", x=_)
# [1] "1086.16998" "1086.16998"