У меня есть файл текстовых данных, который я, скорее всего, буду читать с readLines
. Начальная часть каждой строки содержит много тарабарщины, за которыми следуют нужные мне данные. Таблетка и данные обычно разделяются тремя точками. Я хотел бы разбить строки после трех последних точек или заменить последние три точки маркером некоторого типа, говорящим R, чтобы лечить все слева от этих трех точек как один столбец.R: удаление последних трех точек из строки
Вот аналогичный пост на Stackoverflow, что будет найти последнюю точку:
R: Find the last dot in a string
Однако в моем случае некоторые данные имеют десятичные, поэтому местонахождение последней точки не будет достаточно. Кроме того, я думаю, что ...
имеет особое значение в R, что может усложнить проблему. Другим потенциальным осложнением является то, что некоторые из точек больше других. Кроме того, в некоторых строках одна из трех точек была заменена запятой.
В дополнение к gregexpr
в сообщении выше Я попытался использовать gsub
, но не могу решить, решение.
Вот Подайте пример данные и результат я надеюсь достичь:
aa = matrix(c(
'first string of junk... 0.2 0 1',
'next string ........2 0 2',
'%%%... ! 1959 ... 0 3 3',
'year .. 2 .,. 7 6 5',
'this_string is . not fine .•. 4 2 3'),
nrow=5, byrow=TRUE,
dimnames = list(NULL, c("C1")))
aa <- as.data.frame(aa, stringsAsFactors=F)
aa
# desired result
# C1 C2 C3 C4
# 1 first string of junk 0.2 0 1
# 2 next string ..... 2 0 2
# 3 %%%... ! 1959 0 3 3
# 4 year .. 2 7 6 5
# 5 this_string is . not fine 4 2 3
Я надеюсь, что этот вопрос не рассматривается слишком специфичен. Файл текстовых данных был создан с помощью шагов, описанных в моем сообщении со вчерашнего дня о чтении файла MSWord в R.
Некоторые из строк не содержат тарабарщины или трех точек, а только данные. Однако это может быть осложнением для последующей публикации.
Благодарим за любые советы.
Вы можете выполнить поиск и заменить все запятые и большие точки на обычные точки в первую очередь? –
Я не думаю, что могу заменить запятые точками, потому что данные содержат запятые в больших числах: 4,500. Я забыл упомянуть об этом в своем посте. Хотя, возможно, я мог бы заменить запятые точками, а затем удалить точки из данных после того, как я устранил тарабарщину. –