2017-09-06 124 views
0

當我使用r來讀取txt文件時,我將read.table sep para設置爲sep =「\ 001」或sep =「\\ 001」都不起作用。上述讀取包含nul字符作爲分隔符的txt文件,例如 001?

                 V1 
1    886153044351\0010981623127\001\00113036806119\00113036806119 
2   132693697611\0010\00118380389386\00113795105928\00113795105928 
3    886134400554\0010981623127\001\00115033907649\00115033907649 
4   550075776697\00115955516598\00115955516598\00113969121085\001 
5    886156798054\0010918770552\001\00115977055775\00115977055775 
6 132642200735\00118015668803\00118015668803\00118655109444\00118655109444 

是我用讀表默認爲R. 我用分割功能,但它也沒有像上面09月的工作。

在記事本++中,我用逗號「,」替換了\ 0001,這樣我就可以像讀取數據一樣將數據讀入R中。

如果數據很大,我不能用記事本++替換nul字符,我該怎麼做呢?

+0

使用'strsplit(dat $ V1,「\ 001」,fixed = TRUE)''。 –

+1

或者:'library(splitstackshape); cSplit(dat,'V1',sep ='\ 001')'。 – Jaap

回答

0

嘗試使用read.delim函數:

read.delim(
text = "V1 
1 886153044351\0010981623127\001\00113036806119\00113036806119 
2 132693697611\0010\00118380389386\00113795105928\00113795105928 
3 886134400554\0010981623127\001\00115033907649\00115033907649 
4 550075776697\00115955516598\00115955516598\00113969121085\001 
5 886156798054\0010918770552\001\00115977055775\00115977055775 
6 132642200735\00118015668803\00118015668803\00118655109444\00118655109444", 
sep = "\001", header = FALSE) 


       V1   V2   V3   V4   V5 
1    V1   NA   NA   NA   NA 
2 1 886153044351 981623127   NA 13036806119 13036806119 
3 2 132693697611   0 18380389386 13795105928 13795105928 
4 3 886134400554 981623127   NA 15033907649 15033907649 
5 4 550075776697 15955516598 15955516598 13969121085   NA 
6 5 886156798054 918770552   NA 15977055775 15977055775 
7 6 132642200735 18015668803 18015668803 18655109444 18655109444 
+0

你確定這可以與文件一起使用嗎?我不管理。 –

0

我不管理使用費伊@Colin的解決方案從一個文件中。

一種解決方案是:

  • 讀取該文件作爲字符串
  • 用逗號代替\001
  • 寫在文件中新的字符串
  • 讀取新的文件爲csv

像這樣在R:

library(readr) 
rawfile <- read_file("txt001sep.txt") 
rawfile_csv <- gsub("\\\\001", ",", rawfile) 
write_file(rawfile_csv, "myfile.csv") 
read_csv("myfile.csv", col_names=FALSE) 
相關問題