regex 默认txt数据导入带有太多的分隔符,分隔符为'fread' from 'data.table'

xxb16uws  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个大的数据集,我需要导入。然而,这个基地是一个有点bug的原始文件。基地有太多的分隔符在一些行,由于数据填充错误。我可以在原始基地纠正,但它是非常长的。
我想知道从data.table导入fread或以其他方式导入时是否可以纠正此问题。
例如,一段数据看起来像这样:

"Test File1"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File1"|2|3|8|"Baseline1"
"File test2"|"1"|"2"|"3"|"4"|""|"5"|"6"|"2"|"File"|"o2"|2|3|8 |"Baseline2"
"Test File3"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File3"|2|3|8|"Baseline3"
"Test File4"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File4"|2|3|8|"Baseline"|"4 "
"Test File5"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File5"|2|3|8|"Baseline5"
"Test File5"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File5"|2|3|8|"Baseline5"
"File test6"|10|8|3|10|1|"6"|13|"File6"|2|10|13|"Baseline6"
"Test File7"|14|12|3|12|1|"6"|8|"File7"|2|7|6|"Baseline7"
"Test File8"|7|7|3|10|1|"6"|9|"File8"|2|11|14|"Baseline8"
"Test File9"|7|10|3|9|1|"6"|14|"File9"|2|11|14|"Baseline9"
"Test File10"|11|14|3|7|1|"6"|11|"File10"|2|6|11|"Baseline10"
"Test File11"|13|9|3|10|1|"6"|10|"File11"|2|10|13|"Baseline11"
"Test File12"|10|9|3|11|1|"6"|11|"File12"|2|6|8|"Baseline12"
"Test File13"|9|12|3|11|1|"6"|11|"File13"|2|11|6|"Baseline13"
"Test file14"|6|14|3|13|1|"6"|8|"File14"|2|11|6|"Baseline14"
"Test File15"|12|7|3|14|1|"6"|6|"File15"|2|6|12|"Baseline15"
"Trent" | "file16" | "1" |"5"| "3" |"4"| "5"| "6" | "2" | "Arch" | "" | "ivo16" |2|3|8| "Baseline" | "16"
"File test17"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File17"|2|3|8|"Ba"|"seline17 "
"Test File18"|"1"|"2"|"3"|"4"|""|"5"|"6"|"2"|"File18"|2|3|8|"Baseline18"

但是,我想得到这样的结构:

"Test File1"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File1"|2|3|8|"Baseline1"
"File test2"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File2"|2|3|8|"Baseline2"
"Test File3"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File3"|2|3|8|"Baseline3"
"Test File4"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File4"|2|3|8|"Baseline4"
"Test File5"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File5"|2|3|8|"Baseline5"
"Test File5"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File5"|2|3|8|"Baseline5"
"File test6"|"10"|"8"|"3"|"10"|"1"|"6"|"13"|"File6"|2|10|13|"Baseline6"
"Test File7"|"14"|"12"|"3"|"12"|"1"|"6"|"8"|"File7"|2|7|6|"Baseline7"
"Test File8"|"7"|"7"|"3"|"10"|"1"|"6"|"9"|"File8"|2|11|14|"Baseline8"
"Test File9"|"7"|"10"|"3"|"9"|"1"|"6"|"14"|"File9"|2|11|14|"Baseline9"
"Test File10"|"11"|"14"|"3"|"7"|"1"|"6"|"11"|"File10"|2|6|11|"Baseline10"
"Test File11"|"13"|"9"|"3"|"10"|"1"|"6"|"10"|"File11"|2|10|13|"Baseline11"
"Test File12"|"10"|"9"|"3"|"11"|"1"|"6"|"11"|"File12"|2|6|8|"Baseline12"
"Test file13"|"9"|"12"|"3"|"11"|"1"|"6"|"11"|"File13"|2|11|6|"Baseline13"
"Test File14"|"6"|"14"|"3"|"13"|"1"|"6"|"8"|"File14"|2|11|6|"Baseline14"
"Test File15"|"12"|"7"|"3"|"14"|"1"|"6"|"6"|"File15"|2|6|12|"Baseline15"
"Trent file16"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File16"|2|3|8|"Baseline16"
"File test17"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File17"|2|3|8|"Baseline17"
"Test file18"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File18"|2|3|8|"Baseline18"

谢谢你的帮助

fzsnzjdm

fzsnzjdm1#

您可以考虑以下方法:

library(stringr)

fn_Replace <- function(text)
{
  text <- stringr::str_remove_all(text, '\"|')
  text <- paste0('\"', text, '\"')
  return(text)
}

vec_Data <- c('"Test File1"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File1"|2|3|8|"Baseline1"',
              '"File test2"|"1"|"2"|"3"|"4"|""|"5"|"6"|"2"|"File"|"o2"|2|3|8 |"Baseline2"',
              '"Test File3"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File3"|2|3|8|"Baseline3"',
              '"Test File4"|"1"|"5"|"3"|"4"|"5"|"6"|"2"|"File4"|2|3|8|"Baseline"|"4 "',
              '"Test File5"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File5"|2|3|8|"Baseline5"',
              '"Test File5"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File5"|2|3|8|"Baseline5"',
              '"File test6"|10|8|3|10|1|"6"|13|"File6"|2|10|13|"Baseline6"',
              '"Test File7"|14|12|3|12|1|"6"|8|"File7"|2|7|6|"Baseline7"',
              '"Test File8"|7|7|3|10|1|"6"|9|"File8"|2|11|14|"Baseline8"',
              '"Test File9"|7|10|3|9|1|"6"|14|"File9"|2|11|14|"Baseline9"',
              '"Test File10"|11|14|3|7|1|"6"|11|"File10"|2|6|11|"Baseline10"',
              '"Test File11"|13|9|3|10|1|"6"|10|"File11"|2|10|13|"Baseline11"',
              '"Test File12"|10|9|3|11|1|"6"|11|"File12"|2|6|8|"Baseline12"',
              '"Test File13"|9|12|3|11|1|"6"|11|"File13"|2|11|6|"Baseline13"',
              '"Test file14"|6|14|3|13|1|"6"|8|"File14"|2|11|6|"Baseline14"',
              '"Test File15"|12|7|3|14|1|"6"|6|"File15"|2|6|12|"Baseline15"',
              '"Trent" | "file16" | "1" |"5"| "3" |"4"| "5"| "6" | "2" | "Arch" | "" | "ivo16" |2|3|8| "Baseline" | "16"',
              '"File test17"|"1"|"2"|"3"|"4"|"5"|"6"|"2"|"File17"|2|3|8|"Ba"|"seline17 "',
              '"Test File18"|"1"|"2"|"3"|"4"|""|"5"|"6"|"2"|"File18"|2|3|8|"Baseline18"')

list_Data_Splitted <- stringr::str_split(vec_Data, "\\|")
list_Data_Splitted <- lapply(X = list_Data_Splitted , FUN = function(x){x[1 : 9] <- fn_Replace(x[1 : 9]); return(x)})
list_Data_Splitted <- lapply(X = list_Data_Splitted , FUN = function(x) paste0(x, collapse = "|"))
vec_Data_Splitted <- unlist(list_Data_Splitted)
vec_Data_Splitted

[1] "\"Test File1\"|\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"2\"|\"File1\"|2|3|8|\"Baseline1\""                                               
 [2] "\"File test2\"|\"1\"|\"2\"|\"3\"|\"4\"|\"\"|\"5\"|\"6\"|\"2\"|\"File\"|\"o2\"|2|3|8 |\"Baseline2\""                                   
 [3] "\"Test File3\"|\"1\"|\"5\"|\"3\"|\"4\"|\"5\"|\"6\"|\"2\"|\"File3\"|2|3|8|\"Baseline3\""                                               
 [4] "\"Test File4\"|\"1\"|\"5\"|\"3\"|\"4\"|\"5\"|\"6\"|\"2\"|\"File4\"|2|3|8|\"Baseline\"|\"4 \""                                         
 [5] "\"Test File5\"|\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"2\"|\"File5\"|2|3|8|\"Baseline5\""                                               
 [6] "\"Test File5\"|\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"2\"|\"File5\"|2|3|8|\"Baseline5\""                                               
 [7] "\"File test6\"|\"10\"|\"8\"|\"3\"|\"10\"|\"1\"|\"6\"|\"13\"|\"File6\"|2|10|13|\"Baseline6\""                                          
 [8] "\"Test File7\"|\"14\"|\"12\"|\"3\"|\"12\"|\"1\"|\"6\"|\"8\"|\"File7\"|2|7|6|\"Baseline7\""                                            
 [9] "\"Test File8\"|\"7\"|\"7\"|\"3\"|\"10\"|\"1\"|\"6\"|\"9\"|\"File8\"|2|11|14|\"Baseline8\""                                            
[10] "\"Test File9\"|\"7\"|\"10\"|\"3\"|\"9\"|\"1\"|\"6\"|\"14\"|\"File9\"|2|11|14|\"Baseline9\""                                           
[11] "\"Test File10\"|\"11\"|\"14\"|\"3\"|\"7\"|\"1\"|\"6\"|\"11\"|\"File10\"|2|6|11|\"Baseline10\""                                        
[12] "\"Test File11\"|\"13\"|\"9\"|\"3\"|\"10\"|\"1\"|\"6\"|\"10\"|\"File11\"|2|10|13|\"Baseline11\""                                       
[13] "\"Test File12\"|\"10\"|\"9\"|\"3\"|\"11\"|\"1\"|\"6\"|\"11\"|\"File12\"|2|6|8|\"Baseline12\""                                         
[14] "\"Test File13\"|\"9\"|\"12\"|\"3\"|\"11\"|\"1\"|\"6\"|\"11\"|\"File13\"|2|11|6|\"Baseline13\""                                        
[15] "\"Test file14\"|\"6\"|\"14\"|\"3\"|\"13\"|\"1\"|\"6\"|\"8\"|\"File14\"|2|11|6|\"Baseline14\""                                         
[16] "\"Test File15\"|\"12\"|\"7\"|\"3\"|\"14\"|\"1\"|\"6\"|\"6\"|\"File15\"|2|6|12|\"Baseline15\""                                         
[17] "\"Trent \"|\" file16 \"|\" 1 \"|\"5\"|\" 3 \"|\"4\"|\" 5\"|\" 6 \"|\" 2 \"| \"Arch\" | \"\" | \"ivo16\" |2|3|8| \"Baseline\" | \"16\""
[18] "\"File test17\"|\"1\"|\"2\"|\"3\"|\"4\"|\"5\"|\"6\"|\"2\"|\"File17\"|2|3|8|\"Ba\"|\"seline17 \""                                      
[19] "\"Test File18\"|\"1\"|\"2\"|\"3\"|\"4\"|\"\"|\"5\"|\"6\"|\"2\"|\"File18\"|2|3|8|\"Baseline18\""

相关问题