如何从此文件导入数据(参见 EC 的 URL)

问题描述 投票:0回答:1

tsv中数据集的链接

https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/env_ww_genp?format=TSV&compressed=true

我下载了它,提取到tsv文件,用记事本打开它,可以想象数据帧结构,但不知道如何导入它。

您可以下载它并查看 tsv 文件或下面是数据集的一部分

freq,ww_gtd,substance,unit,geo\TIME_PERIOD  2000    2001    2002    2003    2004    2005    2006    2007    2008    2009    2010    2011    2012    2013    2014    2015    2016    2017    2018    2019    2020    2021 
A,DIS,BOD,O2_TD,AT  :   :   :   :   :   :   :   :   15.00   :   15.00   :   12.60   :   12.50   :   13.59   :   12.57   12.90   12.78   16.99 
A,DIS,BOD,O2_TD,BE  22.36 e 21.28 e 101.67 e    11.16 e 9.62 e  32.01 e :   :   :   :   34.89 e 31.13 e 34.89 e 32.38 e 27.07 e 30.01 e 31.78 e 26.49 e 28.13 e :   :   : 
A,DIS,BOD,O2_TD,CY  :   :   :   :   0.45    0.50    :   :   :   :   :   :   :   :   :   :   :   :   0.19    :   0.22    : 

请帮忙。

我想导入它,获取变量、列、行。

谢谢你。

r csv import
1个回答
0
投票

该文本文件内部有两个分隔符。第一个分隔符是逗号,用于分隔前 5 个变量(freq、ww_gtd、substance、unit 和 geo),第二个分隔符是制表符 ( )。

您可以从

readLines
查看。

head(readLines("F:/Edward/Stackoverflow/estat_env_ww_genp.tsv//estat_env_ww_genp.tsv"), 2)
    [1] "freq,ww_gtd,substance,unit,geo\\TIME_PERIOD\t2000 \t2001 \t2002 \t2003 \t2004 \t2005 \t2006 \t2007 \t2008 \t2009 \t2010 \t2011 \t2012 \t2013 \t2014 \t2015 \t2016 \t2017 \t2018 \t2019 \t2020 \t2021 "
    [2] "A,DIS,BOD,O2_TD,AT\t: \t: \t: \t: \t: \t: \t: \t: \t15.00 \t: \t15.00 \t: \t12.60 \t: \t12.50 \t: \t13.59 \t: \t12.57 \t12.90 \t12.78 \t16.99 "

您可以尝试使用

readr::read_tsv
(或带有制表符分隔符的
read.csv
)阅读本文,并稍后处理前 5 个变量。

df <- read_tsv("estat_env_ww_genp.tsv")
head(df, 3)

# A tibble: 3 × 23
freq,ww_gtd,substance,uni…¹ `2000` `2001` `2002` `2003` `2004` `2005` `2006`
  <chr>                       <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr> 
1 A,DIS,BOD,O2_TD,AT          :      :      :      :      :      :      :     
2 A,DIS,BOD,O2_TD,BE          22.36… 21.28… 101.6… 11.16… 9.62 e 32.01… :     
3 A,DIS,BOD,O2_TD,CY          :      :      :      :      0.45   0.50   :     
# ℹ abbreviated name: ¹​`freq,ww_gtd,substance,unit,geo\\TIME_PERIOD`
# ℹ 15 more variables: `2007` <chr>, `2008` <chr>, `2009` <chr>,
#   `2010` <chr>, `2011` <chr>, `2012` <chr>, `2013` <chr>, `2014` <chr>,
#   `2015` <chr>, `2016` <chr>, `2017` <chr>, `2018` <chr>, `2019` <chr>,
#   `2020` <chr>, `2021` <chr>

您可以使用以下内容分隔第一列中的数据:

df |>
  tidyr::separate(col=1, sep=",", into=c("freq", "ww_gtd", "substance", "unit", "geo"))
# A tibble: 1,880 × 27
   freq  ww_gtd substance unit  geo   `2000`  `2001`  `2002`  `2003` `2004`
   <chr> <chr>  <chr>     <chr> <chr> <chr>   <chr>   <chr>   <chr>  <chr> 
 1 A     DIS    BOD       O2_TD AT    :       :       :       :      :     
 2 A     DIS    BOD       O2_TD BE    22.36 e 21.28 e 101.67… 11.16… 9.62 e
 3 A     DIS    BOD       O2_TD CY    :       :       :       :      0.45  
 4 A     DIS    BOD       O2_TD CZ    :       :       :       :      :     
 5 A     DIS    BOD       O2_TD EE    :       :       :       :      :     
 6 A     DIS    BOD       O2_TD FI    :       :       :       :      :     
 7 A     DIS    BOD       O2_TD LT    :       :       :       :      :     
 8 A     DIS    BOD       O2_TD LV    8.09    6.04    5.94    5.51   7.05  
 9 A     DIS    BOD       O2_TD MT    0.00    0.00    0.00    0.00   0.00  
10 A     DIS    BOD       O2_TD RO    :       :       :       :      :     
# ℹ 1,870 more rows
© www.soinside.com 2019 - 2024. All rights reserved.