【发布时间】:2019-04-01 14:15:02
【问题描述】:
我正在从包含一堆 csv 文件的文件夹中读取 R 中的 csv 文件。我只需要读取文件名包含特定字符串(“冗余”)的选定文件。在某些所需文件中,列(“ROLE”)值之一包含逗号。我需要忽略这些逗号。我该怎么做?
例如:一些所需文件的值如下:
User,ROLE,Rule ID<br/>
amit,[oi.freetier.developer, gse.automationengineer],R12345
当我执行以下代码时:
files <- list.files(pattern='.*REDUNDANT(.*).csv$')
tbl <- sapply(files, read_csv, col_types = cols(.default = "c"), quote = "[]", simplify=FALSE) %>%
bind_rows(.id = "id") %>% select(id, `User Login`, `Rule ID`) %>% distinct()
我得到如下结果:
id `User` `Rule` <chr> <chr> <chr> 1 Users.csv_REDUNDANT_amit.csv amit gse.automationengineer]
【问题讨论】:
-
从您的第二个示例行中,您似乎希望逗号同时充当分隔符 和 有时也不是那样,而是作为纯文本。对此没有简单的解决方案,通常您必须编写一个解析器。
-
谢谢蒂姆。有什么线索吗?
-
readr::read_csv应该能够解析这个,如果逗号值在双引号内,它们应该是,如果 csv 格式正确。 -
按原样阅读
paste第二列和第三列? -
感谢 Julian,但遗憾的是逗号值不在双引号中。