R - 使用自定义行分隔符导入包装的 .txt 文件
R - import wrapped .txt file with custom line separator
我正在尝试将一个 .txt 文件导入到 R 中,行分隔符表示为“\”,列分隔符表示为“*”。但是,每一行都是换行的,我找不到设置自定义行分隔符的函数。
真实文件是我公司的banking 822 edi文件(大约10,000行),所以我无法显示实际文本。但是,美国银行不会在您下载这些文件时解包它们。
我尝试导入的 .txt 文件看起来像这样:
示例文本文件
1*AAA*2*BBB*CC
C*3*DDD
我希望它看起来像这样:
第 1 列
第 2 栏
第 3 列
第 4 栏
1
AAA
2
BBB
2
CCC
3
DDD
我一直无法找到执行此操作的函数,因此将不胜感激。谢谢。
想通了。可能是一种更简洁的方法,但由于没有人回答我会留下我的解决方案以防其他人遇到这个问题。
首先我将整个文本文件作为字符串导入:
filename <- 'BOA 2020-12.txt'
import.dat <- readChar(filename, file.info(filename)$size)
然后我去掉了当前的换行符:
import.dat <- gsub('[\r\n]','',import.dat)
然后我用换行符替换“\”
import.dat <- gsub('[\r\]','\n',import.dat)
现在我有一个干净的字符串可以解析出来。接下来,我将字符串拆分为每个换行符的单列矩阵。
import.dat <- unlist(strsplit(import.dat,split='\n'))
在这种特定情况下,每一行都有不同长度的列,所以我创建了一个零矩阵(17 是列的最大长度。可以插入它,因为这些类型的文档总是有最大 17列)和 运行 每行的嵌套 for 循环并填充列。
sub.dat <- as.data.frame(matrix(0,ncol=17,nrow=length(import.dat)))
for(i in 1:length(import.dat)){
temp <- unlist(strsplit(import.dat[i],split='\*'))
for(j in 1:length(temp)){
sub.dat[i,j] <- temp[j]
}
}
繁荣,简单易行。
我正在尝试将一个 .txt 文件导入到 R 中,行分隔符表示为“\”,列分隔符表示为“*”。但是,每一行都是换行的,我找不到设置自定义行分隔符的函数。
真实文件是我公司的banking 822 edi文件(大约10,000行),所以我无法显示实际文本。但是,美国银行不会在您下载这些文件时解包它们。
我尝试导入的 .txt 文件看起来像这样:
示例文本文件 |
---|
1*AAA*2*BBB*CC |
C*3*DDD |
我希望它看起来像这样:
第 1 列 | 第 2 栏 | 第 3 列 | 第 4 栏 |
---|---|---|---|
1 | AAA | 2 | BBB |
2 | CCC | 3 | DDD |
我一直无法找到执行此操作的函数,因此将不胜感激。谢谢。
想通了。可能是一种更简洁的方法,但由于没有人回答我会留下我的解决方案以防其他人遇到这个问题。
首先我将整个文本文件作为字符串导入:
filename <- 'BOA 2020-12.txt'
import.dat <- readChar(filename, file.info(filename)$size)
然后我去掉了当前的换行符:
import.dat <- gsub('[\r\n]','',import.dat)
然后我用换行符替换“\”
import.dat <- gsub('[\r\]','\n',import.dat)
现在我有一个干净的字符串可以解析出来。接下来,我将字符串拆分为每个换行符的单列矩阵。
import.dat <- unlist(strsplit(import.dat,split='\n'))
在这种特定情况下,每一行都有不同长度的列,所以我创建了一个零矩阵(17 是列的最大长度。可以插入它,因为这些类型的文档总是有最大 17列)和 运行 每行的嵌套 for 循环并填充列。
sub.dat <- as.data.frame(matrix(0,ncol=17,nrow=length(import.dat)))
for(i in 1:length(import.dat)){
temp <- unlist(strsplit(import.dat[i],split='\*'))
for(j in 1:length(temp)){
sub.dat[i,j] <- temp[j]
}
}
繁荣,简单易行。