Импорт csv R-Studio через запятую, но содержащий точки с запятой в некоторых строках - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь импортировать файл 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)

Кто-нибудь знает, как это исправить?

Спасибо!

1 Ответ

1 голос
/ 13 июля 2020

Я могу смоделировать ваш результат, только если я явно добавлю двойные кавычки в файл 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 для чтения объекта построчно, а затем использовать, например, регулярное выражение, чтобы избавиться от кавычек.

fread из data.table может вам помочь:

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.

...