R-Studio csv导入以逗号分隔,但在某些字符串中包含分号



我正在尝试将csv文件导入R-Studio。列用逗号分隔,但问题是一列包含一个字符串,而这个字符串有时只由字符组成,有时包含分号(如"abcdefg33;asbfsk2ala;shcjd22l"(。在任何情况下,这个字符串都不应该被分隔,分号不是分隔符。

实际情况是,对于这些列中包含分号的行,没有任何分隔符。相反,其他线路运行良好。

结果如下:

Column1                                Column2   Column3
a                                      12        abc12 
b                                      222       bbbb222
c,333,abcdefg33;asbfsk2ala;shcjd22l
d                                      282       ddbb232

为了导入数据,我尝试使用这段代码,但在这两种情况下,我都得到了上面的结果。

data <- read.csv("Test.csv")
and
data <- read.csv("Test.csv", sep = ",", strip.white = TRUE)

有人知道我该怎么修吗?

谢谢!

只有在csv文件中显式添加双引号(例如使用Notepad++(时,我才能模拟您的结果:

a,12,1bc12
b,222,bbbb222
"c,333,abcdefg33;asbfsk2ala;shcjd22l"
d,282,ddbb232

在这种情况下,生成的数据帧看起来像您的:

> data
V1  V2      V3
1                                   a  12   1bc12
2                                   b 222 bbbb222
3 c,333,abcdefg33;asbfsk2ala;shcjd22l  NA        
4                                   d 282 ddbb232

我的建议是确保你的csv文件不包含引号。否则,您可以使用readLines逐行读取对象,然后使用例如regex来去掉引号。

data.table中的fread可能会帮助您:

library(data.table)
data4 <- fread("data_62871591.csv", sep = ",", quote = "")

按如下方式读取此文件:

> data4
V1  V2                             V3
1:  a  12                          1bc12
2:  b 222                        bbbb222
3: "c 333 abcdefg33;asbfsk2ala;shcjd22l"
4:  d 282                        ddbb232

正如您所看到的,仍然需要一些后期处理来去除第3行V1和V3列上的引号。

相关内容

最新更新