我正在尝试将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列上的引号。