Очистка данных с помощью R: избавление от дополнительных остановок - PullRequest
0 голосов
/ 08 мая 2018

Я очищаю данные с помощью 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, что очищает все полные остановки, и десятичные числа искажаются.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы можете использовать look-ahead для замены точки (.), которые не до space или |, на:

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. | '</p>

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  |

Regex объяснение:

([.]+) - Сгруппируйте любое число . перед просмотром

(?=[[: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.  |'
0 голосов
/ 08 мая 2018

Если трейлинг-стоп полностью является единственным проявлением проблемы, вы можете просто удалить его с помощью sub:

x <- c("101.25", "200.56.", "300.26")
x <- sub("\\.$", "", x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...