读取带引号内类别的csv时出现问题

时间:2019-11-29 10:56:43

标签: r

我想读取一个csv,其中一列包含引号,而引号内的字符串包含逗号。

CSV标头:

id,名称,促销,类别,价格,单价

CSV示例行:

142251,图里,“男子√∫,林皮扎,林皮亚多雷斯,皮索斯,库拉多雷斯”,$ 73.65,$ 81.83 x Lt

我想要一个这样的dataFrame:

id = 142251

name = TULI

promo =

categories =Men√∫,Limpieza,Limpiadores,Pisos,Curadores

价格= $ 73.65

unit_price = $ 81.83 x Lt

我尝试做数据<-read.csv(file =“ data.csv”,sep =“,”,quote =“”)

但是我收到“ read.table中的错误(文件=文件,标头=标头,sep = sep,引用=引号,:列数多于列名)。

我知道解决方案将非常简单,但是我找不到解决方案。预先感谢。

2 个答案:

答案 0 :(得分:1)

您还可以使用readr中的tidyverse来轻松读取csv:


library(readr)
txt <- 'id,name,promo,categories,price,unit_price
142251, TULI,,"Men√∫,Limpieza,Limpiadores,Pisos,Curadores",$ 73.65,$81.83 x Lt'


df <- read_csv(txt)
df
#> # A tibble: 1 x 6
#>       id name  promo categories                               price   unit_price
#>    <dbl> <chr> <lgl> <chr>                                    <chr>   <chr>     
#> 1 142251 TULI  NA    Men√∫,Limpieza,Limpiadores,Pisos,Curado… $ 73.65 $81.83 x …

# Bonus
library(dplyr)
library(tidyr)

df2 <- df %>% 
  mutate(categories = strsplit(categories, ","))
df2
#> # A tibble: 1 x 6
#>       id name  promo categories price   unit_price 
#>    <dbl> <chr> <lgl> <list>     <chr>   <chr>      
#> 1 142251 TULI  NA    <chr [5]>  $ 73.65 $81.83 x Lt

df2 %>% unnest(categories)
#> # A tibble: 5 x 6
#>       id name  promo categories  price   unit_price 
#>    <dbl> <chr> <lgl> <chr>       <chr>   <chr>      
#> 1 142251 TULI  NA    Men√∫       $ 73.65 $81.83 x Lt
#> 2 142251 TULI  NA    Limpieza    $ 73.65 $81.83 x Lt
#> 3 142251 TULI  NA    Limpiadores $ 73.65 $81.83 x Lt
#> 4 142251 TULI  NA    Pisos       $ 73.65 $81.83 x Lt
#> 5 142251 TULI  NA    Curadores   $ 73.65 $81.83 x Lt

reprex package(v0.3.0)于2019-11-29创建

当然您也可以使用df <- read_csv("data.csv")

答案 1 :(得分:0)

数据<-read.csv(file =“ data.csv”,sep =“,”,quote =“ \”“)

应该可以,如果您查看帮助文件,则要完全禁用引用,请使用quote =“”。您需要在引号前面加上转义\。