Как перейти к файлу .csv, который содержит текстовые строки с запятыми? - PullRequest
0 голосов
/ 29 декабря 2018

Я использую функцию read.delim, но поскольку текстовые строки, которые я читаю, также содержат комментарии, в которых пользователи использовали запятые (","), комментарии делятся на два или более столбца.

Нижедве строки из набора данных:

@ Zillaman Вы просто ели все виды еды в кроватке Зины и даже не думали обо мне !!!!, 0

Я должен иметьбыло только 11, когда мистер Пиперс начал.Это было необходимо увидеть всей семье, я думаю, в Sun ..., 1

Первая строка прочитана правильно.«0» читается в следующем столбце.Вторая строка разбита на три столбца, причем последний столбец содержит «1»

dataset_original = read.delim('TrainingData.csv', 
                              quote = "",
                              row.names = NULL, 
                              stringsAsFactors = FALSE,
                              header = F, as.is = F,
                              colClasses = "character",
                              blank.lines.skip = T,
                              sep = ",")

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Если мы читаем файл с помощью readLines(), мы можем впоследствии разделить последнюю запятую.

write(x="@Zillaman u just aite all types of food at Zina crib and didnt even think about me!!!!,0

I must have been only 11 when Mr Peepers started. It was a must see for the whole family, I believe on Sun...,1", 
file="file.txt")

gg <- readLines("file.txt")

spl <- strsplit(gg, ",(?=[^,]+$)", perl=TRUE)
dtf <- as.data.frame(do.call(rbind, spl), stringsAsFactors=FALSE)

dtf
#                                                     V1  V2
# 1 @Zillaman u just (...) didnt even think about me!!!!   0
# 2 I must have been (...) family, I believe on Sun...     1
0 голосов
/ 29 декабря 2018

Попробуйте прочитать все строки по отдельности, а затем разделить текст и целевые столбцы.

Попробуйте:

df= read.delim('TrainingData.csv',
               quote = "",
               row.names = NULL,
               stringsAsFactors = FALSE,
               header = F, as.is = F,
               colClasses = "character",
               blank.lines.skip = T,
               sep = "\n")


df$target = regmatches(df$V1, regexpr(pattern = "[^,]*$", text = df$V1))
df$V1 = sub(pattern = ",[^,]*$", replacement = "", x = df$V1)

, где df означает dataset_original

Пример:

С файлом, содержащим:

hello,0
world,1
not,right,1
this,one,is,even,worse,0

Этот метод возвращает:

> df
                      V1 target
1                  hello      0
2                  world      1
3              not,right      1
4 this,one,is,even,worse      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...