У меня есть текстовый файл данных, который я, вероятно, прочитаю с помощью readLines
. Начальная часть каждой строки содержит много тарабарщины, за которой следуют нужные мне данные. Тарабарщина и данные обычно разделяются тремя точками. Я хотел бы разделить строки после последних трех точек или заменить последние три точки каким-либо маркером, сообщающим R, что все слева от этих трех точек следует рассматривать как один столбец.
Вот аналогичный пост на Stackoverflow, в котором будет найдена последняя точка:
R: найти последнюю точку в строке
Однако в моем случае некоторые данные содержат десятичные дроби, поэтому поиск последней точки будет недостаточно. Кроме того, я думаю, что ...
имеет особое значение в 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.
Некоторые строки не содержат тарабарщины или трех точек, а содержат только данные.Тем не менее, это может быть осложнением для последующего поста.
Спасибо за любой совет.