我正在尝试使用 readr
从
partyfacts读取以下 CSV 文件。
导入会出现问题,但实际上没有问题。
download.file("https://partyfacts.herokuapp.com/download/external-parties-csv/", "partyfacts-external-parties.csv")
df <- readr::read_csv("partyfacts-external-parties.csv", show_col_types = FALSE)
警告:一个或多个解析问题,请在数据框上致电
了解详细信息,problems()
例如:
数据<- vroom(...)
问题(数据)
让我们看看我们有什么:
nrow(problems(df))
86
problems(df)[1,]
# 小题:1 × 5 row col 预期实际文件
35519 15 17 列 15 列 /home/raffaele/Downloads/external-parties.csv
但实际上没有问题。
第 35519 行是:
BIH,elecglob,292,少女时代,独立社会民主党联盟,独立社会民主党联盟,1998,2014,19.1,2006,,,2019-02-08 19:26:26.193233+00:00,2021-03- 12 10:15:38.362019+00:00,30450,292,2019-02-08 19:26:26.296626+00:00
正确包含 17 列,而不是 15。
其他 84 个问题具有相同的性质(读取的列数少于预期)并且适用类似的推理(源文件中的列数是正确的)。
您的问题是由某些单元格值中存在逗号引起的,这些值被 R 解释为分隔符,因为
readr::read_csv()
对输入数据的“整洁”程度严格要求。如果您需要 tibble,可以先使用不太严格的基数 read.csv()
:
library(tibble)
df <- read.csv("partyfacts-external-parties.csv") |>
as_tibble(show_col_types = FALSE)
df
# # A tibble: 44,937 × 17
# country dataset_key dataset_party_id name_short name name_english year_first
# <chr> <chr> <chr> <chr> <chr> <chr> <int>
# 1 ALB manifesto 75721 DBSH E Djath… United Alba… 1996
# 2 ALB manifesto 75810 PASH Partia … Agrarian Pa… 1991
# 3 ALB manifesto 75421 AD Partia … Democratic … 1992
# 4 ALB manifesto 75951 PBDNJ Partia … Union for H… 1991
# 5 ALB manifesto 75624 PD Partia … Democratic … 1991
# 6 ALB manifesto 75622 PUK Partia … Party of Na… 1992
# 7 ALB manifesto 75623 PLL Partia … Legality Mo… 1991
# 8 ALB manifesto 75621 PP Partia … People’s Pa… 1991
# 9 ALB manifesto 75722 PRSH Partia … Albanian Re… 1991
# 10 ALB manifesto 75320 PSD Partia … Social Demo… 1991
# # ℹ 44,927 more rows
# # ℹ 10 more variables: year_last <int>, share <dbl>, share_year <int>,
# # description <chr>, comment <chr>, created <chr>, modified <chr>,
# # external_id <int>, partyfacts_id <int>, linked <chr>
# # ℹ Use `print(n = ...)` to see more rows