У меня есть одна колонка data.frame
, где некоторые пробелы должны быть ограничителями некоторого просто пространства.Замените определенные пробелы на вкладки - разделители
#input data
dat <- data.frame(x=c("A 2 2 textA1 textA2 Z1",
"B 4 1 textX1 textX2 textX3 Z2",
"C 3 5 textA1 Z3"))
# x
# 1 A 2 2 textA1 textA2 Z1
# 2 B 4 1 textX1 textX2 textX3 Z2
# 3 C 3 5 textA1 Z3
нужно преобразовать его в 5 колонке data.frame
:
#expected output
output <- read.table(text="
A 2 2 textA1 textA2 Z1
B 4 1 textX1 textX2 textX3 Z2
C 3 5 textA1 Z3",sep="\t")
# V1 V2 V3 V4 V5
# 1 A 2 2 textA1 textA2 Z1
# 2 B 4 1 textX1 textX2 textX3 Z2
# 3 C 3 5 textA1 Z3
По существу, необходимо изменить 1-й, 2-й, 3-й и последний пространство на вкладке (или любой другой разделитель, если она делает это проще кодировать).
Игра с regex
не дает ничего полезного пока ...
Note1: В реальных данных я должен заменить 1-й, 2-й, 3-й, ..., 19 и последние пробелы в закладках.
Примечание2: Нет рисунка в V4
, текст может быть любым.
Note3: Последняя колонка - это текст одного слова с переменной длиной.
Попробуйте 'v1 <- gsub ("^([^] +) \\ s + ([^] +) \\ s + ([^] +) \\ s + ", '\\ 1 , \\ 2, \\ 3, ', dt $ x); read.table (text = sub (' + (? = [^] + $) ',', ', V1, perl = TRUE), sep = ",") ' – akrun
Спасибо @akrun, пожалуйста, добавьте свой комментарий как ответ. – zx8754
@akrun см. Примечание. Ваше решение все равно будет работать, просто нужно перейти к '' \\ 1, \\ 2, ... \\\ 19 '... ' – zx8754