मेरे पास एक कॉलम 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
अनिवार्य रूप से, 1st, 2nd, 3, और एक टैब पर पिछले अंतरिक्ष (या किसी अन्य सीमांकक बदलने के लिए अगर यह बनाता है की जरूरत है:
#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
में बदलने की जरूरत है कोड के लिए आसान)।
regex
के साथ खेलना कुछ भी उपयोगी अभी तक न जताए ...
Note1: वास्तविक डेटा में मैं 1st, 2nd, 3rd, ..., 19 वीं और टैब के लिए पिछले रिक्त स्थान को बदलने के लिए।
नोट 2:V4
में कोई पैटर्न नहीं है, पाठ कुछ भी हो सकता है।
नोट 3: अंतिम कॉलम चर लंबाई के साथ एक शब्द पाठ है।
'v1 <- gsub ("^ ([^] +) \\ s + ([^] +) \\ s + ([^] +) \\ s +" [^] +\ \\ s + ",' \\ 1 आज़माएं , \\ 2, \\ 3, ', $ x x); read.table (text = sub (' + (? = [^] + $) ',', ', V1, perl = TRUE), sep = ",") ' – akrun
धन्यवाद @akrun, कृपया अपना जोड़ें एक उत्तर के रूप में टिप्पणी करें। – zx8754
@akrun नोट देखें, आपका समाधान अभी भी काम करेगा, बस '' \\ 1, \\ 2, ... \\\ 19 'तक विस्तार करने की आवश्यकता है ... ' – zx8754