如何导入具有多行qoutations的csv文件?

时间:2019-05-09 13:24:54

标签: r csv import quoting

我正在读一堆主要包含语音的.csv文件。格式化文件的方式是一位发言者的qoutation遍历多行。我该如何在read.csv中设置我的qoutation设置才能正确导入它们?

我试图通过以下方式导入它们:

AlleProtokolleSafe <- list() 
listcsv <- dir(path = "Plenarprotokolle/", pattern = "*.csv")
for (k in 1:length(listcsv)){
  AlleProtokolleSafe[[k]] <- read.csv(paste(c("Plenarprotokolle/", listcsv[k]), sep = "", collapse = ""), sep = ",", header = FALSE, quote = "", encoding = "UTF-8")
}

现在的问题是,当我禁用qoutes时,文本中的“,”将被视为分隔符,尽管它们在语音中却不应被视为分隔符。如果我改为执行qoute =“ \”“,那么某些文件也将无法正确读取。我猜是因为有引号从一行开始到另一行结束。

我使用https://github.com/Datenschule/offenesparlament-data/tree/master/sessions/csv中的数据集。例如,如果您查看162.csv,您会看到qoutation从第2行开始到第52行结束。

请注意,标头= FALSE,因为如果为TRUE且qoute =“”时,它将以某种方式给出错误。 我不需要标题,因此以后可以轻松删除第一行。

我只想导入纯文本以进行单词分析,因此我打算将这些数据集的所有其他内容都剔除掉。有没有更好的方法呢?

编辑:这里仍然有问题:删除所有数据集,我得到15列和Nr以外的各种行。 162和191,我只有3列。有人可以通过查看文件来解释吗?我在那里看不到真正的区别,而且我不是真的很喜欢.csv

1 个答案:

答案 0 :(得分:0)

我不确定,请正确理解您的问题。

我的答案正在使用data.table::freaddplyr

我准备了两个选择。

第一个选择是将data.frame之类的数据保存在列表中

第二个选项不列出,并合并列表中的所有字符串

library(data.table)
library(dplyr)

AlleProtokolleSafe <- list() # This is First option
AlleProtokolleSafe_un <- list() # This is Second option

listcsv = file.path("Your directory path",
                    list.files("Your directory path", pattern = '.csv'))

for (k in 1:length(listcsv)){
  AlleProtokolleSafe[[k]] <- fread(listcsv[k],encoding = "UTF-8", select = 'text')
  AlleProtokolleSafe_un[[k]] <- fread(listcsv[k],encoding = "UTF-8", select = 'text') %>% 
    sapply(., paste, collapse=" ")
}

select='text'中的上述代码选项fread意味着只加载text列(我想您想要此列。对吗?)

最后,您可以在下面获得结果

> AlleProtokolleSafe[[1]][1]
   1: Einen wundersch?nen sonnigen guten........Bundesminister Hermann Gr?he.
> AlleProtokolleSafe_un[[1]]
   # You will get all the text in listcsv[1] with one row