Ich habe eine Spalte data.frame
wo einige Leerzeichen sollten Trennzeichen einige nur ein Leerzeichen sein.Ersetzen Sie bestimmte Leerzeichen zu Tabs - Trennzeichen
#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
Du möchtest bis 5 Spalte data.frame
konvertieren:
#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
Im Wesentlichen 1. ändern müssen, 2., 3., und das letzte Feld auf eine Registerkarte (oder einem anderen Trennzeichen, wenn er es macht einfacher zu codieren).
mit regex
Spielen gibt nicht etwas Nützliches noch ...
Hinweis 1: In realen Daten I 1. ersetzen müssen, 2., 3., ..., 19. und die letzten Räume Registerkarten.
Hinweis2: Es gibt kein Muster in V4
, Text kann alles sein.
Hinweis3: Letzte Spalte ist ein Wort mit variabler Länge.
Versuch 'v1 <- gsub ("^ ([^] +) \\ s + ([^] +) \\ s + ([^] +) \\ s +",' \\ 1 , \\ 2, \\ 3, ', dat $ x); read.table (text = sub (' + (? = [^] + $) ',', ', V1, perl = WAHR), sep = ",") ' – akrun
Dank @akrun, bitte fügen Sie Ihre Kommentar als Antwort. – zx8754
@akrun siehe Hinweis, deine Lösung würde immer noch funktionieren, muss nur auf '\\ 1, \\ 2, ... \\\ 19 'erweitert werden ...' – zx8754