在R中导入.txt文件



我想导入一个具有以下模式的txt文件:

"X1""ID_T35.x""Produktionsdatum.x""Herstellernummer.x""Werksnummer.x""Fehlerhaft.x""Fehlerhaft_Datum.x""Fehlerhaft_Fahrleistung.x""ID_T35.y""Produktionsdatum.y""Herstellernummer.y""Werksnummer.y""Fehlerhaft.y""Fehlerhaft_Datum.y""Fehlerhaft_Fahrleistung.y""1"2"35-217-2173-92"2008-11-07"217"2173NANANANANANANANA"2"9"35-217-2173-23"2008-11-07"217"2173NANANANANANANANA"3"10"35-217-2173-24"2008-11-07"217"2173NANANANANANANANA"4"11"35-217-2173-52"2008-11-07"217"2173NANANANANANANANA"5"12"35-217-2173-104"2008-11-07"217"2173NANANANANANANANA"6"19"35-217-2173-50"2008-11-07"217"2173NANANANANANANANA"7"20"35-217-2173-93"2008-11-07"217"2173NANANANANANANANA"8"21"35-217-2173-111"2008-11-07"217"2173NANANANANANANANA"9"22"35-217-2173-113"2008-11-07"217"2173NANANANANANANANA"10"23"35-217-2173-138"2008-11-07"217"2173NANANANANANANANA"11"24"35-217-2173-150"2008-11-07"217"2173NANANANANANANANA"12"25"35-217-2173-158"2008-11-07"217"2173NANANANANANANANA"13"33"35-217-2173-8"2008-11-07"217"2173NANANANANANANANA"14"34"35-217-2173-43"2008-11-07"217"2173NANANANANANANANA"15"35"35-217-2173-79"2008-11-07"217"217312010-04-2841562.3534246575NANANANANANANA"16"36"35-217-2173-102"2008-11-07"217"2173NANANANANANANANA"17"37"35-217-2173-117"2008-11-07"217"2173NANANANANANANANA"18"38"35-217-2173-139"2008-11-07"217"217312010-04-2841562.3534246575NANANANANANANA"19"40"35-217-2173-55"2008-11-07"217"2173NANANANANANANANA"20"41"35-217-2173-182"2008-11-08"217"217312010-04-2941648.7616438356NANANANANANANA"21"42"35-217-2173-212"2008-11-08"217"2173NANANANANANANANA"22"43"35-217-2173-227"2008-11-08"217"217312010-04-2941648.7616438356NANANANANANANA"23"44"35-217-2173-283"2008-11-08"217"2173NANANANANANANANA"24"49"35-217-2173-41"2008-11-07"217"2173NANANANANANANANA"25"

反斜线表示一个新的列,直到字符串"为止;1〃;。这应该是一个新的争吵。数据集应该有818844行。该数据集称为Einzelteil_T35。我的方法是这样的:

library(readr)
library(data.table)
library(tidyverse)
Einzelteil_T35 <- read_file("Einzelteil_T35.txt") %>%
  str_replace_all(. , """", ";") %>%
  str_replace_all(. ,"____", "n" ) %>%    #"_____" means i haven't find a pattern to identify the new row
  fread(text = .) %>%
  as_tibble()

我一直在想一种方法来计算反斜杠,并在每次找到第15个反斜杠时创建新行,因为第15个逆斜杠是新行的开始,但我找不到方法。也许你可以用这种方法或者用完全不同的方法来帮助我。

提前非常感谢

此代码读取文件,将其转换为Nx15矩阵,从最后一列中删除行号,使用第一行作为标题,然后将其转换成data.frame。

唯一剩下的问题是,转换为矩阵将所有单元格内容转换为字符。您必须手动将列转换回数字。

data = paste(scan("data_line.txt",what="character"),collapse='') ## Read the file
dmat = matrix(strsplit(data,"\\")[[1]],ncol=15,byrow=T) ## Convert it to a matrix
dmat[,15] = gsub("".*[0-9]"","",dmat[,15]) ## Remove the next line number from the values of the last column
colnames(dmat)=dmat[1,] ## Take first line as names
dmat = dmat[-1,] ## Remove first line (as it contained the names)
df = as.data.frame(dmat)

EDIT:修复了正则表达式。

如果可以确定模式"1〃;只出现在标记新行的位置,也许你可以试试这个?

编辑:我的意思是没有第一根管子。

library(readr)
library(data.table)
library(tidyverse)
Einzelteil_T35 <- read_file("Einzelteil_T35.txt") %>%
  str_replace_all(. ,'\"1\"', "n" ) %>%   
  fread(text = .) %>%
  as_tibble()

如果不是,也许有一种方法可以使模式更具体一点,例如"在新行之前总是以"开头;。y";或者什么的。

最新更新