如何更改由管道和引号分隔的文本文件的编码,以便将其读入R?
我想将文本文件中的数据读入R数据框。数据由管道如何更改由管道和引号分隔的文本文件的编码,以便将其读入R?,r,windows,encoding,file-import,R,Windows,Encoding,File Import,我想将文本文件中的数据读入R数据框。数据由管道|分隔,并且在值周围有引号。我尝试了一些组合read.table,但它将所有内容导入到单个字段中,而不是拆分它。数据如下所示: "CompetitorDataID"|"CompetitorID"|"ItemID"|"UserID"|"CountryID"|"SegmentID"|"TaskID"|"Price"|"Comment"|"CreateDate"|"GeneralCustomer"|"TenderResult" "29"|"5"|"1876
|
分隔,并且在值周围有引号。我尝试了一些组合read.table
,但它将所有内容导入到单个字段中,而不是拆分它。数据如下所示:
"CompetitorDataID"|"CompetitorID"|"ItemID"|"UserID"|"CountryID"|"SegmentID"|"TaskID"|"Price"|"Comment"|"CreateDate"|"GeneralCustomer"|"TenderResult"
"29"|"5"|"187630"|"1375"|"5"|"398"|"4085"|"5.000000"|"test"|"2013-01-1002:58:23.230000000"|"False"|"1"
"30"|"5"|"1341"|"1294"|"5"|"398"|"4088"|"6.000000"|"test"|"2013-01-1003:15:26.687000000"|"False"|"1"
"31"|"5"|"1007"|"1375"|"5"|"398"|"4105"|"5.000000"|""|"2013-01-1005:50:51.150000000"|"False"|"1"
虽然此代码在粘贴到R中时将导入,但它无法从原始文本文件中工作。我收到以下错误消息:
Warning messages:
1: In read.table("competitorDataCopy.txt", header = TRUE, sep = "|") :
line 1 appears to contain embedded nulls
2: In read.table("competitorDataCopy.txt", header = TRUE, sep = "|") :
line 2 appears to contain embedded nulls
3: In read.table("competitorDataCopy.txt", header = TRUE, sep = "|") :
line 3 appears to contain embedded nulls
4: In read.table("competitorDataCopy.txt", header = TRUE, sep = "|") :
line 4 appears to contain embedded nulls
5: In read.table("competitorDataCopy.txt", header = TRUE, sep = "|") :
line 5 appears to contain embedded nulls
6: In read.table("competitorDataCopy.txt", header = TRUE, sep = "|") :
line 1 appears to contain embedded nulls
7: In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
embedded nul(s) found in input
设置sep=“|”似乎适合我。read.table
的默认参数是quote=“\”
,因此它将自动从值的开头/结尾删除引号
read.table(text='"CompetitorDataID"|"CompetitorID"|"ItemID"|"UserID"|"CountryID
"|"SegmentID"|"TaskID"|"Price"|"Comment"|"CreateDate"|"GeneralCustomer"|"TenderResult"
"29"|"5"|"187630"|"1375"|"5"|"398"|"4085"|"5.000000"|"test"|"2013-01-10 02:58:23.230000000"|"False"|"1"
"30"|"5"|"1341"|"1294"|"5"|"398"|"4088"|"6.000000"|"test"|"2013-01-10 03:15:26.687000000"|"False"|"1"
"31"|"5"|"1007"|"1375"|"5"|"398"|"4105"|"5.000000"|""|"2013-01-10 05:50:51.150000000"|"False"|"1"'
, sep="|", header=T)
我已通过在记事本中打开文件并将编码从Unicode更改为ANSI解决了此问题。我不确定这会有什么不同,但它现在可以干净地导入。您可以通过以下方式轻松导入管道分隔的.txt文件:
file_in <- read.table("C:/example.txt", sep = "|")
“代码>阅读”表(文本)文本=“““竞争对手”表(文本=““竞争对手”表(文本=““竞争对手”表(文本);“竞争对手”表(文本>文件>文件>文件>文件”中设置设置<代码>文件>文件”中设置<代码>文件>文件>中设置<代码>sep>sep>sep>sep>sep>sep>sep>sep>sep>sep>sep>sep>sep>sep>sep>文件>文件>文件中设置<<<<<<<<<<<<<<<<代码>文件>文件>文件>文件中设置设置设置设置设置<<<<<<<<<<<代码>文件>文件>文件>中设置设置设置<<<<<代码>文件>文件>文件<<<<<<<<<<代码>文件>文件>文件>文件>文件>文件>文件>文件>中设置设置设置设置设置<<02:58:23.230000000“假”1“30”5“4.8”甲“6.000000”甲“测试”甲“测试”甲,“2013-01-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11“;;;“12”4 4 4 4 4 4 4 4 4 4”4 4”4 4”4 4”4”4 4 4”4”4”4”4”4 4”4”4”4”4”4”4”4”4”4”4”4”4”4”4 4”4”4”4”4”4”4”4”4”4”4”4”4”4”4”6.8”甲甲甲甲甲“测试”4”4”4”4”4”甲甲甲“测试”4”测试”测试”测试”4”3”回答。您的实际问题是在Windows下读取编码有缺陷的文件,请相应地编辑问题。这与读取引用的PSV文件无关。这将误导其他用户。此解决方案仅适用于示例中粘贴的数据,而不适用于原始文本文件。我已经更新了我的问题,以尽量更清楚,因为我原来的问题不够详细。这并不是在R中读取PSV的真正解决方案。如果实际问题是在Windows下读取编码有缺陷的文件,请相应地编辑问题。