使用R清理数据:摆脱额外的句号

时间:2018-05-08 04:31:42

标签: r

我使用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,这会清除所有句号,并且十进制数会失真。

2 个答案:

答案 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.  |'