首页 > 解决方案 > 如何读取分隔符“|” R外部csv文件中的垂直线

问题描述

在 R 中,如何读取分隔符或将分隔符转换为“|” 垂直线(ASCII:||)。我需要拆分文件中的整数,所以 strsplit() 对我没有帮助。

我有读取 csv 文件的 R 代码,但它仍然保留垂直线“|” 特点。该文件的分隔符为“|” 场之间。当我尝试使用 read.table() 阅读时,我得到逗号,“,”分隔每个单独的字符。我还尝试在 R 中使用 dplyr for tab_spanner_delim(delim = "|") 来转换 read.delim("file.csv", sep="|") 读取文件后的垂直线,即使是这个 read.delmin( ) 不起作用。我是特殊字符 R 编程的新手。

read.table(text = gsub("|", ",", readLines("file.csv")))

dat_csv <- read.delim("file.csv", sep="|")

x <- cat_csv %>% tab_spanner_delim(delim = "|")

dput() from read.table(text = gsub("|", ",", readLines("file.csv")))

",\",R,D,|,I,|,7,8,|,0,1,0,|,0,0,1,2,|,8,8,1,0,1,|,1,|,7,|,1,0,5,|,1,1,6,|,1,9,9,9,1,2,2,0,|,0,0,:,0,0,|,|,A,M,|,6,|,|,|,|,|,|,|,|,|,|,|,|,|,\",", 
",\",R,D,|,I,|,7,8,|,0,1,0,|,0,0,1,2,|,8,8,1,0,1,|,1,|,7,|,1,0,5,|,1,1,6,|,1,9,9,9,1,2,2,6,|,0,0,:,0,0,|,4,.,9,|,|,6,|,|,|,|,|,|,|,|,|,|,|,|,|,\","

dput() 来自 dat_csv <- read.delim("file.csv", sep="|")

"RD|I|78|010|0012|88101|1|7|105|116|19991220|00:00||AM|6|||||||||||||", 
"RD|I|78|010|0012|88101|1|7|105|116|19991226|00:00|4.9||6|||||||||||||"

输入(dat_csv)

"RD|I|78|010|0012|88101|1|7|105|116|19991220|00:00||AM|6|||||||||||||", 
"RD|I|78|010|0012|88101|1|7|105|116|19991226|00:00|4.9||6|||||||||||||"

标签: rcsv

解决方案


我们可以使用 逐行读取数据readLines。使用 删除每行末尾不需要的字符,trimws将字符串粘贴到一个以换行符 ( \n) 字符作为collapse参数的字符串中,然后使用该字符串read.table读取数据作为数据框。

data <- read.table(text = paste0(trimws(readLines('file.csv'), 
                   whitespace = '[", ]'), collapse = '\n'), sep = '|')

推荐阅读