首页 > 解决方案 > 在 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"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"2"\9\"35-217-2173-23"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"3"\10\"35-217-2173-24"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"4"\11\"35-217-2173-52"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"5"\12\"35-217-2173-104"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"6"\19\"35-217-2173-50"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"7"\20\"35-217-2173-93"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"8"\21\"35-217-2173-111"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"9"\22\"35-217-2173-113"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"10"\23\"35-217-2173-138"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"11"\24\"35-217-2173-150"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"12"\25\"35-217-2173-158"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"13"\33\"35-217-2173-8"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"14"\34\"35-217-2173-43"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"15"\35\"35-217-2173-79"\2008-11-07\"217"\2173\1\2010-04-28\41562.3534246575\NA\NA\NA\NA\NA\NA\NA"16"\36\"35-217-2173-102"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"17"\37\"35-217-2173-117"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"18"\38\"35-217-2173-139"\2008-11-07\"217"\2173\1\2010-04-28\41562.3534246575\NA\NA\NA\NA\NA\NA\NA"19"\40\"35-217-2173-55"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"20"\41\"35-217-2173-182"\2008-11-08\"217"\2173\1\2010-04-29\41648.7616438356\NA\NA\NA\NA\NA\NA\NA"21"\42\"35-217-2173-212"\2008-11-08\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"22"\43\"35-217-2173-227"\2008-11-08\"217"\2173\1\2010-04-29\41648.7616438356\NA\NA\NA\NA\NA\NA\NA"23"\44\"35-217-2173-283"\2008-11-08\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"24"\49\"35-217-2173-41"\2008-11-07\"217"\2173\0\NA\0\NA\NA\NA\NA\NA\NA\NA"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 个反斜杠是新行的开始,但我没有找到方法。也许你可以用这种方法或完全不同的方法帮助我。

非常感谢您提前

标签: rimport

解决方案


如果您可以确定模式“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”或其他东西开头。


推荐阅读