我使用R。
清理数据以下是我的数据格式 输入
1) 100 | 101.25 | 102.25. | . | .. | 201.5. |
2) 200.05. | 200.56. | 205 | .. | . | 3000 |
3) 300.98 | 300.26. | 2001.56.| ... | 0.2| 5.65. |
预期产出:
1) 100 | 101.25 | 102.25 |NA | NA |201.5
2) 200.05|200.26 | 205 |NA | NA |3000
3) 300.98|300.26 |2001.26 |NA |0.2 |5.65
表格中有额外的句号,我试图清理,但要保留其格式的十进制数字
我尝试在R中替换all,这会清除所有句号,并且十进制数会失真。
答案 0 :(得分:3)
如果尾随句号确实是问题的唯一表现形式,那么您可以尝试使用sub
删除它:
x <- c("101.25", "200.56.", "300.26")
x <- sub("\\.$", "", x)
答案 1 :(得分:2)
您可以使用look-ahead
替换不在.
或space
之前的点(|
):
x&lt; - '1)100 | 101.25 | 102.25。 | 。 | .. | 201.5。 | 2)200.05。 | 200.56。 | 205 | .. | 。 | 3000 | 3)300.98 | 300.26。 | 2001.56。| ...... | 0.2 | 5.65。 |'
y <- gsub("([.]+)(?=[[:blank:]|])","",x,perl = TRUE)
cat(y)
# 1) 100 | 101.25 | 102.25 | | | 201.5 |
# 2) 200.05 | 200.56 | 205 | | | 3000 |
# 3) 300.98 | 300.26 | 2001.56| | 0.2| 5.65 |
正则表达式解释:
([.]+)
- 在预测之前将任意数量的.
分组
(?=[[:blank:]|])
- 在:blank:
或|
数据:强>
x <- '1) 100 | 101.25 | 102.25. | . | .. | 201.5. |
2) 200.05. | 200.56. | 205 | .. | . | 3000 |
3) 300.98 | 300.26. | 2001.56.| ... | 0.2| 5.65. |'