读取csv文件分隔符的值

问题描述 投票:0回答:1

我正在尝试导入列分隔符为“|”的 csv 文件。其中一列的值包含“|”。这会导致错误,并且数据操作系统不会加载超出该特定行的内容。如何克服这个问题。

我尝试过 read.csv() 和 fread() 函数。

r fread read.csv
1个回答
0
投票

1) 如果有引用字符,则可以使用

read.csv
正常读取,但如果没有,我们知道 4 个字段中的第 3 个字段可能包含也可能不包含 |然后创建一个与线条匹配的模式并使用
read.pattern
。我们在最后的注释中生成示例输入。

library(gsubfn)

pat <- "([^|]*)\\|([^|]*)\\|(.*)\\|([^|]*)$"
read.pattern("raj.dat", pattern = pat, header = TRUE, strip.white = TRUE)

给予

   A  B   C  D
1  1  2 a|c  3
2 10 20   x 40

2) 如果额外|字符前面和后面紧跟着一个非数字,而对于实际的分隔符来说并非如此,那么每当出现这种模式时,我们就可以替换文件中未出现的字符(此处;),然后正常读取它,然后转换回来。

L <- readLines("raj.dat")
L[-1] <- gsub("(\\D)\\|(\\D)", "\\1;\\2", L[-1])
DF <- read.table(text = L, header = TRUE, sep = "|")
DF[[3]] <- chartr(";", "|", DF[[3]])

注意

示例输入--

Lines <- "A|B|C|D
1|2|a|c|3
10|20|x|40
"
cat(Lines, file = "raj.dat")
© www.soinside.com 2019 - 2024. All rights reserved.