为给出背景,上一个问题的引言很好地解释了这一点:
在R中,某些软件包(例如
haven
,WDI
)插入label
属性 变量,它解释了变量的实质名称。对于 例如,gdppc
可能带有标签GDP per capita
。这是 非常有用,尤其是从Stata导入数据时。
(请参阅:Convenient way to access variables label after importing Stata data with haven)
我有一些带有非常有用的标签(即attr(*, "label")=
)的数据,当我用* write_csv()
写入* .csv时,它们似乎丢失了。
例如(下面的可复制示例-使用WDI
下载一个很小的数据集):
library(WDI)
cpi <- WDI(indicator='FP.CPI.TOTL', country=c('US'), start=2000, end=2019)
str(cpi)
#> 'data.frame': 19 obs. of 4 variables:
#> $ iso2c : chr "US" "US" "US" "US" ...
#> $ country : chr "United States" "United States" "United States" "United States" ...
#> $ FP.CPI.TOTL: num NA 112 110 109 109 ...
#> ..- attr(*, "label")= chr "Consumer price index (2010 = 100)"
#> $ year : int 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 ...
在上方,您可以看到标签..- attr(*, "label")= chr "Consumer price index (2010 = 100)"
然后,如果我写* .csv,则下次我read_csv()
时,标签消失了:
library(readr)
write_csv(cpi, "cpi.csv")
cpi <- read_csv("cpi.csv")
str(cpi)
#> Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 19 obs. of 4 variables:
#> $ iso2c : chr "US" "US" "US" "US" ...
#> $ country : chr "United States" "United States" "United States" "United States" ...
#> $ FP.CPI.TOTL: num NA 112 110 109 109 ...
#> $ year : num 2018 2017 2016 2015 2014 ...
#> - attr(*, "spec")=
#> .. cols(
#> .. iso2c = col_character(),
#> .. country = col_character(),
#> .. FP.CPI.TOTL = col_double(),
#> .. year = col_double()
#> .. )
是否有一种方便的方法可以继续将数据存储在* .csv中?还是我的解决方法必须涉及保存为不太透明的格式?
由reprex package(v0.2.1)于2019-06-27创建