使用避风港导入Stata数据后将变量的标签写入* .csv的便捷方法

时间:2019-06-27 08:37:23

标签: r stata tidyverse readr r-haven

为给出背景,上一个问题的引言很好地解释了这一点:

  

在R中,某些软件包(例如havenWDI)插入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创建

0 个答案:

没有答案