У меня есть данные, как показано ниже. Я хочу извлечь первый и последний год из каждой строки, которая называется my.string
. Некоторые строки содержат только один год, а некоторые строки не содержат никаких лет. Никакие строки не содержат более двух лет. Я привел желаемый результат в объекте с именем desired.result
ниже примера набора данных. Я использую R
.экстракт нерегулярные числовые данные из строк
Если строка содержит два года в те годы, содержатся в части строки, которая выглядит следующим образом ga49.51
или ea22.24
Если строка содержит только один год в этом году, содержится в части строки, которая выглядит вот так: time11
Я знаю немного о regex
, но эта проблема кажется слишком нерегулярной и сложной для меня, чтобы понять. Я даже не знаю, с чего начать. Спасибо за любой совет.
EDIT
Возможно удалить номера до первого двоеточия (:) и остальных чисел, что я хочу.
my.data <- read.table(text = '
my.string cov1 cov2
42:Alpha:ga6.8 -0.1 2.2
43:Alpha:ga9.11 -2.5 0.6
44:Alpha:ga30.32 -1.3 0.5
45:Alpha:ga49.51 -2.5 0.6
50:Alpha:time1:ga.time -1.7 0.9
51:Alpha:time2:ga.time -1.5 0.8
52:Alpha:time3:ga.time -1.0 1.0
2:Beta:ea2.9 -1.7 0.6
3:Beta:ea17.19 -5.0 0.8
4:Beta:ea22.24 -6.4 1.0
8:Beta:as 0.2 0.6
9:Beta:sd 1.7 0.4
12:Beta:time1:ea.tim -2.6 1.8
13:Beta:time10:ea.ti -3.6 1.1
14:Beta:time11:ea.ti -3.1 0.7
', header = TRUE, stringsAsFactors = FALSE, na.strings = "NA")
desired.result <- read.table(text = '
my.string cov1 cov2 time1 time2
42:Alpha:ga6.8 -0.1 2.2 6 8
43:Alpha:ga9.11 -2.5 0.6 9 11
44:Alpha:ga30.32 -1.3 0.5 30 32
45:Alpha:ga49.51 -2.5 0.6 49 51
50:Alpha:time1:ga.time -1.7 0.9 1 NA
51:Alpha:time2:ga.time -1.5 0.8 2 NA
52:Alpha:time3:ga.time -1.0 1.0 3 NA
2:Beta:ea2.9 -1.7 0.6 2 9
3:Beta:ea17.19 -5.0 0.8 17 19
4:Beta:ea22.24 -6.4 1.0 22 24
8:Beta:as 0.2 0.6 NA NA
9:Beta:sd 1.7 0.4 NA NA
12:Beta:time1:ea.tim -2.6 1.8 1 NA
13:Beta:time10:ea.ti -3.6 1.1 10 NA
14:Beta:time11:ea.ti -3.1 0.7 11 NA
', header = TRUE, stringsAsFactors = FALSE, na.strings = "NA")
Какой язык программирования или язык сценариев используется для обработки текстового файла? – mangotang
Можете ли вы показать пример вашего ожидаемого вывода на основе ввода образца? какая часть 'ga49.51' является годом? Какая часть 'time11' является годом (я угадываю' 11')? – mangotang
'((?: Time | ga | ea) (? \ d +) (\. (? \ d +))?)' –